C#RestSharp - 反序列化非标准JSON

Mar*_*ark 2 c# serialization json

我正在尝试使用RestSharp来反序列化JSON字符串.然而,我被"555111222"部分的略微非标准结构所困.

编号555111222是设备序列号,因此可以更改,或者JSON响应中可以有多个序列号.

{
"requestid": "42",
"data": {
    "555111222": {
        "gps_data": [
            {
                "longitude": -73.952284,
                "latitude": 40.755988,
                "time": "2016-06-30 09:41:21"
            },
            {
                "longitude": -73.952284,
                "latitude": 40.755988,
                "time": "2016-06-30 09:41:22"
            },
            {
                "longitude": -73.952284,
                "latitude": 40.755988,
                "time": "2016-06-30 09:41:23"
            }
        ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Json2csharp.com给了我以下内容

public class GpsData
{
    public double longitude { get; set; }
    public double latitude { get; set; }
    public string time { get; set; }
}

public class __invalid_type__555111222
{
    public List<GpsData> gps_data { get; set; }
}

public class Data
{
    public __invalid_type__555111222 __invalid_name__555111222 { get; set; }
}

public class RootObject
{
    public string requestid { get; set; }
    public Data data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理我班级中的invalid_type错误.

谢谢

Jon*_*eet 5

它看起来对我来说,你的Data属性应该是Dictionary<string, GpsDataWrapper>这里GpsDataWrapper仅仅是一个类GpsData属性:

public class GpsData
{
    public double longitude { get; set; }
    public double latitude { get; set; }
    public string time { get; set; }
}

public class GpsDataWrapper
{
    public List<GpsData> gps_data { get; set; }
}

public class RootObject
{
    public string requestid { get; set; }
    public Dictionary<string, GpsDataWrapper> data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我个人然后将所有这些转换为使用.NET命名约定并应用属性来指定JSON中使用的名称.