JsonConvert.DeserializeObject数组数组

时间:2016-06-08 04:07:06

标签: json.net json-deserialization

这与其他帖子类似,但我的变化是我的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);

以及其他各种变化。异常文本开始&#34;无法将当前JSON数组(例如[1,2,3])反序列化为类型&#39; jsontest.RootObject&#39;因为类型需要一个JSON对象(例如{&#34; name&#34;:&#34; value&#34;})才能正确反序列化。&#34;

1 个答案:

答案 0 :(得分:1)

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

尝试反序列化:

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

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