反序列化 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属性从反序列化的角度来看是只读的