【发布时间】:2021-01-20 03:13:47
【问题描述】:
我确实有一个问题,可能是初学者的问题,但对 JSON 不是很熟悉。但是,我尝试使用 C# Newtonsoft.Json 反序列化下面的 JSON,但是,它一直失败,谁能告诉我如何反序列化它以及如何在 C# 中建模?
[
{
"fields": [
[
"name",
"value",
"values",
"error"
],
[
"correspondsApi",
"N",
null,
""
],
[
"username",
"test@test.com",
null,
""
],
[
"password",
"",
null,
""
],
[
"accountid",
"",
null,
""
],
[
"rememberMe",
"Y",
null,
""
],
[
"language",
"en-US",
null,
""
],
[
"S",
"tokenValue",
null,
null
],
[
"authToken",
"",
null,
""
]
],
"success": "Y",
"message": "Access is granted"
}
]
以下是我尝试过的不断抛出异常的代码: 型号:
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; }
}
代码:
using Newtonsoft.Json;
static void Main(string[] args)
{
string jsonContent = "[{\"fields\":[[\"name\",\"value\",\"values\",\"error\"],[\"correspondsApi\",\"N\",null,\"\"],[\"username\",\"test@test.com\",null,\"\"],[\"password\",\"\",null,\"\"],[\"accountid\",\"\",null,\"\"],[\"rememberMe\",\"Y\",null,\"\"],[\"language\",\"en-US\",null,\"\"],[\"S\",\"tokenValue\",null,null],[\"authToken\",\"\",null,\"\"]], \"success\":\"Y\",\"message\":\"Access is granted\"}]";
JsonConvert.DeserializeObject<Root>(jsonContent);
}
例外:
Newtonsoft.Json.JsonSerializationException: '无法反序列化 当前 JSON 数组(例如 [1,2,3])转换为“LearningOnly.Root”类型 因为该类型需要一个 JSON 对象(例如 {"name":"value"}) 正确反序列化。要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为 实现集合接口的数组或类型(例如 ICollection, IList) 之类的可以从 JSON 反序列化的 List 大批。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。路径'',第 1 行,位置 1。'
【问题讨论】:
-
你尝试了什么,什么失败了?
-
@Liam 很遗憾没有,我已经修改了问题并添加了更多细节。
-
你好@less,我已经添加了更多细节,我尝试了不同的建模,但最后我一直面临错误。
标签: c# json json.net deserialization jagged-arrays