C# 如何反序列化嵌套JSON数组?
我正在尝试反序列化GeoJson,以便将其分解并存储在数据库中。当我尝试反序列化它时,C# 如何反序列化嵌套JSON数组?,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,我正在尝试反序列化GeoJson,以便将其分解并存储在数据库中。当我尝试反序列化它时,坐标的反序列化失败 我将以下课程用于几何图形: public class GeoJsonGeometry { public string type { get; set; } public string[, ,] coordinates { get; set; } } “几何学”:{“类型”:“多边形”,“坐标”:[[[-85.388717,33.913044],-85.380885,33.8
坐标的反序列化失败
我将以下课程用于几何图形:
public class GeoJsonGeometry {
public string type { get; set; }
public string[, ,] coordinates { get; set; }
}
“几何学”:{“类型”:“多边形”,“坐标”:[[[-85.388717,33.913044],-85.380885,33.873508],-85.379455,33.866291],-85.377426,33.856047],-85.376403,33.850656],-85.364595,33.788446],-85.361844,33.773951],-85.360491,33.767958],-85.357402,33.750252],-85.355,33.739245],[,[-85.344054,33.682684],-85.342722,33.675953],-85.323792,33.580339],-85.315340,33.537646],-85.314994,33.535898],-85.314843,33.534951],-85.314091,33.530218],-85.313999,33.529807],-85.304439,33.482884],-85.308211,33.481579],-85.309250,33.483137],-85.4835,33.48483733],[763],[http]>
我尝试了double[,]
,但也没有成功
我很困惑,因为这看起来应该很好地序列化,因为它是嵌套数组,但事实并非如此。如果您有任何帮助,我们将不胜感激
我还尝试了List
和double[][][]
,但总是失败。JSON不支持多维数组
这是一个数组数组:double[][]
JSON不支持多维数组
这是一个数组的数组:double[][[]
您的几何体
对象应该是
public class Geometry
{
public string type { get; set; }
public List<List<List<double>>> coordinates { get; set; }
}
您的几何体
对象应该是
public class Geometry
{
public string type { get; set; }
public List<List<List<double>>> coordinates { get; set; }
}
最初尝试此操作后得到:无法将当前JSON数组(例如[1,2,3])反序列化为类型“System.Double”,因为该类型需要一个JSON基元值(例如字符串、数字、布尔值、null)才能正确反序列化。若要修复此错误,请将JSON更改为JSON基元值(例如字符串、数字、布尔值、null)或者将反序列化类型更改为数组或实现集合接口的类型(例如ICollection、IList)类似于可以从JSON数组反序列化的列表。还可以将JsonArrayAttribute添加到该类型以强制其从JSON数组反序列化。@Yatrix我使用部分正确的JSON对其进行了测试,结果正常。如果您发布了正确且完整的JSON,我们可以更好地回答。它根本不是该类型。原因是GeoJson数据有一些数组嵌套3深,有些嵌套4深。我没听清楚。谢谢你的帮助。@Yatrix你有反序列化geoJson的代码和完整的类模型吗?我正在数据库中存储空间数据。Thanks@Luther这是一年多以前的事了,我不知道这个东西在哪里,甚至不知道它是否已经存在了。对不起。最初尝试过这个,得到了:C无法将当前JSON数组(例如[1,2,3])反序列化为“System.Double”类型,因为该类型需要JSON基元值(例如字符串、数字、布尔值、null)才能正确反序列化。若要修复此错误,请将JSON更改为JSON基元值(例如字符串、数字、布尔值、null)或者将反序列化类型更改为数组或实现集合接口的类型(例如ICollection、IList)类似于可以从JSON数组反序列化的列表。还可以将JsonArrayAttribute添加到该类型以强制其从JSON数组反序列化。@Yatrix我使用部分正确的JSON对其进行了测试,结果正常。如果您发布了正确且完整的JSON,我们可以更好地回答。它根本不是该类型。原因是GeoJson数据有一些数组嵌套3深,有些嵌套4深。我没听清楚。谢谢你的帮助。@Yatrix你有反序列化geoJson的代码和完整的类模型吗?我正在数据库中存储空间数据。Thanks@Luther这是一年多以前的事了,我不知道这些东西在哪里,甚至不知道它是否已经存在了。对不起,我不明白为什么要这样做ion被否决了,我也有同样的问题,这篇文章也有帮助。我不明白为什么这个问题被否决了,我也有同样的问题,这篇文章也有帮助。
{
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-85.388717,
33.913044
],
[
-85.380885,
33.873508
],
[
-85.379455,
33.866291
],
[
-85.377426,
33.856047
],
[
-85.376403,
33.850656
],
[
-85.364595,
33.788446
],
[
-85.361844,
33.773951
],
[
-85.360491,
33.767958
],
[
-85.357402,
33.750104
],
[
-85.355252,
33.739245
],
[
-85.344054,
33.682684
],
[
-85.342722,
33.675953
],
[
-85.323792,
33.580339
],
[
-85.31534,
33.537646
],
[
-85.314994,
33.535898
],
[
-85.314843,
33.534951
],
[
-85.314091,
33.530218
],
[
-85.313999,
33.529807
],
[
-85.304439,
33.482884
],
[
-85.308211,
33.481579
],
[
-85.30925,
33.483137
],
[
-85.314852,
33.487603
]
]
]
}
}