C# JSON-交错数组反序列化
我有一个问题,可能是初学者的问题,但我对JSON不是很熟悉。然而,我试图使用C Newtonsoft.JSON反序列化下面的JSON,但是,它一直失败,有人能建议如何反序列化它吗?它必须如何在C中建模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
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; }
}