反序列化 json 坐标到 C# 类 的文件
deserlize json file with coordinates to C# classes
我有一个坐标为 [x,y] 的 json 文件
我想根据坐标进行查询,但我不知道如何将其传输到 c# 类。
我尝试使用 https://json2csharp.com/ 但它给了我这样的 类
public class DatasetData
{
public int id { get; set; }
public int channel_id { get; set; }
public string location { get; set; }
public int speed_1 { get; set; }
public int speed_2 { get; set; }
public int speed_3 { get; set; }
}
public class Root
{
public List<DatasetData> dataset_data { get; set; }
}
这是json。如您所见,我已经在该位置内;类型和坐标,但我不知道将它们提取到 类 并使用它们。
{
"dataset_data":[
{
"id":1234,
"channel_id":2,
"location":"{\"type\":\"Point\",\"coordinates\":[-1.17273271,51.9132423]}",
"speed_1":1,
"speed_2":2,
"speed_3":3
}
]
}
您的 json 的问题在于 location
不是对象而是字符串。所以,你也需要反序列化它。
如果您按照 Lasse V. Karlsen 的建议定义 Location
class:
public class Location
{
public string type { get; set; }
public List<double> coordinates { get; set; }
}
那么您需要做的就是像这样修改您的 DatasetData
class:
public class DatasetData
{
...
public string location { set; private get;}
public Location Location => JsonConvert.DeserializeObject<Location>(location);
...
}
-
location
属性 仅从反序列化角度写入
Location
属性从反序列化的角度来看是只读的
我有一个坐标为 [x,y] 的 json 文件 我想根据坐标进行查询,但我不知道如何将其传输到 c# 类。 我尝试使用 https://json2csharp.com/ 但它给了我这样的 类
public class DatasetData
{
public int id { get; set; }
public int channel_id { get; set; }
public string location { get; set; }
public int speed_1 { get; set; }
public int speed_2 { get; set; }
public int speed_3 { get; set; }
}
public class Root
{
public List<DatasetData> dataset_data { get; set; }
}
这是json。如您所见,我已经在该位置内;类型和坐标,但我不知道将它们提取到 类 并使用它们。
{
"dataset_data":[
{
"id":1234,
"channel_id":2,
"location":"{\"type\":\"Point\",\"coordinates\":[-1.17273271,51.9132423]}",
"speed_1":1,
"speed_2":2,
"speed_3":3
}
]
}
您的 json 的问题在于 location
不是对象而是字符串。所以,你也需要反序列化它。
如果您按照 Lasse V. Karlsen 的建议定义 Location
class:
public class Location
{
public string type { get; set; }
public List<double> coordinates { get; set; }
}
那么您需要做的就是像这样修改您的 DatasetData
class:
public class DatasetData
{
...
public string location { set; private get;}
public Location Location => JsonConvert.DeserializeObject<Location>(location);
...
}
-
location
属性 仅从反序列化角度写入 Location
属性从反序列化的角度来看是只读的