json序列化时数组声明有问题
There is a problem with the declaration of array during serialization of json
我在 c# 中使用 API 收到了 Json 文件。
序列化数据时,数组出现问题。
{
"features":[
{
"geometry":{
"type":"Point",
"coordinates":[
126.0,
37.0
]
},
},
{
"geometry":{
"type":"LineString",
"coordinates":[
[
126.0,
37.0
],
[
126.0,
37.0
]
]
},
}
]
}
这是 json 文件的一部分。
而“坐标”数组是重复的,但一个是一维的,另一个是二维的。
我不知道如何声明这个。这是我的代码。
我应该如何声明 geometry class?
public class JsonClass
{
public string type { get; set; }
public List<features> features { get; set; }
}
public class features
{
public string type { get; set; }
public geometry geometry { get; set; }
public properties properties { get; set; }
}
public class geometry
{
public string type { get; set; }
public float[] coordinates { get; set; }
//or public float[,] coordinates { get; set; }?
//both error...
}
请理解我使用了翻译器,因为我不会说英语。
谢谢!
试试这个,它已在 VS 2022 中测试过
var data = JsonConvert.DeserializeObject<Data>(json);
类
public partial class Data
{
[JsonProperty("features")]
public List<Feature> Features { get; set; }
}
public partial class Feature
{
[JsonProperty("geometry")]
public Geometry Geometry { get; set; }
}
public partial class Geometry
{
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("coordinates")]
public List<object> _coordinates
{
set
{
if (value != null && value.Count > 0)
if (double.TryParse(value[0].ToString(), out _))
{
Coordinates1D = value.Select(x => Convert.ToDouble(x)).ToList();
}
else
Coordinates2D = value.Select(x => ((JArray)x).ToObject<List<double>>()).ToList();
}
}
public List<double> Coordinates1D { get; set; }
public List<List<double>> Coordinates2D { get; set; }
}
但在
之前修复你的json
{
"features": [
{
"geometry": {
"type": "Point",
"coordinates": [
126.0,
37.0
]
}
},
{
"geometry": {
"type": "LineString",
"coordinates": [
[
126.0,
37.0
],
[
126.0,
37.0
]
]
}
}
]
}
我在 c# 中使用 API 收到了 Json 文件。
序列化数据时,数组出现问题。
{
"features":[
{
"geometry":{
"type":"Point",
"coordinates":[
126.0,
37.0
]
},
},
{
"geometry":{
"type":"LineString",
"coordinates":[
[
126.0,
37.0
],
[
126.0,
37.0
]
]
},
}
]
}
这是 json 文件的一部分。 而“坐标”数组是重复的,但一个是一维的,另一个是二维的。 我不知道如何声明这个。这是我的代码。 我应该如何声明 geometry class?
public class JsonClass
{
public string type { get; set; }
public List<features> features { get; set; }
}
public class features
{
public string type { get; set; }
public geometry geometry { get; set; }
public properties properties { get; set; }
}
public class geometry
{
public string type { get; set; }
public float[] coordinates { get; set; }
//or public float[,] coordinates { get; set; }?
//both error...
}
请理解我使用了翻译器,因为我不会说英语。 谢谢!
试试这个,它已在 VS 2022 中测试过
var data = JsonConvert.DeserializeObject<Data>(json);
类
public partial class Data
{
[JsonProperty("features")]
public List<Feature> Features { get; set; }
}
public partial class Feature
{
[JsonProperty("geometry")]
public Geometry Geometry { get; set; }
}
public partial class Geometry
{
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("coordinates")]
public List<object> _coordinates
{
set
{
if (value != null && value.Count > 0)
if (double.TryParse(value[0].ToString(), out _))
{
Coordinates1D = value.Select(x => Convert.ToDouble(x)).ToList();
}
else
Coordinates2D = value.Select(x => ((JArray)x).ToObject<List<double>>()).ToList();
}
}
public List<double> Coordinates1D { get; set; }
public List<List<double>> Coordinates2D { get; set; }
}
但在
之前修复你的json{
"features": [
{
"geometry": {
"type": "Point",
"coordinates": [
126.0,
37.0
]
}
},
{
"geometry": {
"type": "LineString",
"coordinates": [
[
126.0,
37.0
],
[
126.0,
37.0
]
]
}
}
]
}