JsonConvert.DeserializeObject 数组的数组

JsonConvert.DeserializeObject array of arrays

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

和其他各种变体。异常文本以 "Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'jsontest.RootObject' because the type requires a JSON object (e.g. {"name":"value"}) 开头以正确反序列化。"

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

尝试像这样反序列化:

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

Fiddle: https://dotnetfiddle.net/ELnmfg