【发布时间】:2019-02-07 16:02:26
【问题描述】:
我有以下 json:需要在 C# 中反序列化。
[
[{
"ElementName": "H1 ",
"lat": 51.394319720562514,
"lng": -109.99996662139893
}, {
"ElementName": "H1 ",
"lat": 51.394319720562514,
"lng": -109.99995589256287
}],
[{
"ElementName": "H2 ",
"lat": 51.394319720562514,
"lng": -109.99996662139893
}, {
"ElementName": "H2 ",
"lat": 51.394319720562514,
"lng": -109.99995589256287
}]
]
我已经编写了以下代码来反序列化它。
public class PointElement
{
public string ElementName { get; set; }
public double lat { get; set; }
public double lng { get; set; }
}
var testPointList = JsonConvert.DeserializeObject<List<PointElement>>(testNewJson);
但控制台显示错误
Controllers.PointElementRecord' 因为该类型需要 JSON 对象(例如 {"name":"value"})正确反序列化。要解决这个问题 错误要么将 JSON 更改为 JSON 对象(例如 {"name":"value"}) 或将反序列化类型更改为数组或实现的类型 一个集合接口(例如 ICollection、IList),比如 List 可以 从 JSON 数组反序列化。 JsonArrayAttribute 也可以 添加到类型以强制它从 JSON 数组反序列化。小路 '[0]',第 1 行,位置 2。
需要解决如何反序列化这种数组字符串,因为这段代码在下面的数组中运行良好
[{
"ElementName": "H1 ",
"lat": 51.394319720562514,
"lng": -109.99996662139893
}, {
"ElementName": "H1 ",
"lat": 51.394319720562514,
"lng": -109.99995589256287
}]
【问题讨论】:
-
您应该编辑您的 JSON 字符串并删除其中的括号。
标签: c# asp.net arrays json asp.net-mvc