【问题标题】:JsonConvert.DeserializeObject array of arraysJsonConvert.DeserializeObject 数组数组
【发布时间】:2016-06-08 04:07:05
【问题描述】:

这与其他帖子类似,但我的变化是我的 json 对象以数组数组开头,我无法对其进行反序列化。

class Program
{
    static void Main(string[] args)
    {
        var json = @"[[{""f1"":1, ""f2"":2}]]";
        var obj = JsonConvert.DeserializeObject<RootObject[]>(json);
    }
}

public class RootObject
{
    public List<InnerObject> InnerObjects { get; set; } 
}

public class InnerObject
{
    public int f1 { get; set; }
    public int f2 { get; set; }
}

我也试过了

JsonConvert.DeserializeObject<List<RootObject>>(json);

以及其他各种变体。异常文本开头“无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'jsontest.RootObject',因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化。”

【问题讨论】:

    标签: json.net json-deserialization


    【解决方案1】:

    您的 JSON 对应于 List&lt;List&lt;InnerObject&gt;&gt; 而不是 RootObject[]。 (对于后者,JSON 需要如下所示:[{ "InnerObjects" : [{"f1": 1, "f2": 2}] }])。

    尝试像这样反序列化:

    var list = JsonConvert.DeserializeObject<List<List<InnerObject>>>(json);
    

    小提琴:https://dotnetfiddle.net/ELnmfg

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多