【发布时间】:2020-04-12 19:07:39
【问题描述】:
我有 JSON 文件,例如:
[
12,
[
{
"id": "131",
"name": "Cate"
},
{
"id": "132",
"name": "Mike"
}
],
"Result OK"
]
和代码:
private static void Main(string[] args)
{
using (var r = new StreamReader(@"C:\Path\data1.json"))
{
var json = r.ReadToEnd();
try
{
var items = JsonConvert.DeserializeObject<JsonBody>(json);
Console.WriteLine(items);
}
catch (JsonSerializationException ex)
{
Console.WriteLine(ex);
}
}
}
public class JsonBody
{
public int someint;
public List<Dictionary<string, Item>> item;
public string somestring;
}
public class Item
{
[JsonProperty("id")] public string id;
[JsonProperty("name")] public string name;
}
错误:无法将当前 JSON 数组(例如 [1,2,3])反序列化为 'Json_parser.Parse2+JsonBody' 类型,因为该类型需要 JSON 对象(例如 {"name":"value" }) 以正确反序列化。
应该在代码中重写什么以避免此错误。 如何正确解析这个 JSON? 我需要从 Item 类中获取所有项目。
【问题讨论】:
-
这个json的根对象是一个数组,包含3个元素,数字12,一个嵌套数组,字符串“Result OK”。您需要将其反序列化为对象数组或类似数组才能处理它。
-
@JohnathanBarclay 我从一个网站得到这个 json
-
@JohnathanBarclay 当然可以。即使这是有效的 json:
"Result OK",它只是一个字符串,但它是有效的 JSON。 -
试试这个:
JToken root = JToken.Parse(json); var items = root[1].ToObject<Item[]>();不过你可能需要更多的错误检查。 -
@LasseV.Karlsen 我的错误。
标签: c# json-deserialization jsonconvert