C# JSON-交错数组反序列化

C# JSON-交错数组反序列化,c#,json,json.net,deserialization,jagged-arrays,C#,Json,Json.net,Deserialization,Jagged Arrays,我有一个问题,可能是初学者的问题,但我对JSON不是很熟悉。然而,我试图使用C Newtonsoft.JSON反序列化下面的JSON,但是,它一直失败,有人能建议如何反序列化它吗?它必须如何在C中建模 public class MyArray { public List<List<string>> fields { get; set; } public string success { get; set; } public string

我有一个问题,可能是初学者的问题,但我对JSON不是很熟悉。然而,我试图使用C Newtonsoft.JSON反序列化下面的JSON,但是,它一直失败,有人能建议如何反序列化它吗?它必须如何在C中建模

public class MyArray    {
    public List<List<string>> fields { get; set; } 
    public string success { get; set; } 
    public string message { get; set; } 
}

public class Root    {
    public List<MyArray> MyArray { get; set; } 
}
[ { 字段:[ [ 名称 价值 价值观 错误 ], [ 对应的SAPI, N 无效的 ], [ 用户名, test@test.com, 无效的 ], [ 暗语 , 无效的 ], [ 帐户ID, , 无效的 ], [ 记住, Y 无效的 ], [ 语言 嗯,我们,, 无效的 ], [ s 代币价值, 无效的 无效的 ], [ authToken, , 无效的 ] ], 成功:Y, 消息:已授予访问权限 } ] 下面是我尝试过的代码,它不断引发异常: 型号:

代码:

例外情况:

Newtonsoft.Json.JsonSerializationException:'无法反序列化 当前JSON数组,例如[1,2,3]为'LearningOnly.Root'类型 因为该类型需要一个JSON对象,例如{name:value}来 正确地反序列化。要修复此错误,请将JSON更改为 JSON对象,例如{name:value}或将反序列化类型更改为 实现集合接口的数组或类型,例如。 ICollection,类似IList的列表,可以从JSON反序列化 大堆还可以将JsonArrayAttribute添加到类型中,以强制它 从JSON数组反序列化。路径,第1行,位置1'

我把你的json放进去了

回答您的问题:如何在C中建模

public class MyArray    {
    public List<List<string>> fields { get; set; } 
    public string success { get; set; } 
    public string message { get; set; } 
}

public class Root    {
    public List<MyArray> MyArray { get; set; } 
}

您的json和对象不匹配。要使用Root,您需要类似于{MyArray:[…]}的json,即具有包含数组的MyArray属性的对象。但你没有。您实际上想要使用:

JsonConvert.DeserializeObjectjsonContent; 因为您的根json结构是一个数组,即,[{},{}]不是一个对象。因此,您需要将其转换为枚举器列表或数组,等等


这里的工作示例:

您尝试了什么,失败了什么?这是否回答了您的问题@Liam不幸的是没有,我已经修改了问题并添加了更多细节。Hello@less,我已经添加了更多细节,我尝试了不同的建模,但最后我一直面临错误。Hello Syp_dino。实际上,我尝试了该解决方案,但没有成功,它给了我以下错误:Newtonsoft.Json.JsonSerializationException:“无法将当前Json数组(例如[1,2,3])反序列化为类型“LearningOnly.Root”,因为该类型需要一个Json对象(例如{name:value})来正确反序列化。要修复此错误,请将JSON更改为JSON对象,例如{name:value},或将反序列化类型更改为数组或实现集合接口的类型
public class MyArray    {
    public List<List<string>> fields { get; set; } 
    public string success { get; set; } 
    public string message { get; set; } 
}

public class Root    {
    public List<MyArray> MyArray { get; set; } 
}