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

C#RestSharp-反序列化非标准JSON,c#,json,serialization,C#,Json,Serialization,我试图使用RestSharp反序列化JSON字符串。然而,我发现“55511122”部分周围的结构有点不标准 55511122是一个设备序列号,因此可以更改,或者JSON响应中可以有多个序列号 { "requestid": "42", "data": { "555111222": { "gps_data": [ { "longitude": -73.952284, "latitude"

我试图使用RestSharp反序列化JSON字符串。然而,我发现“55511122”部分周围的结构有点不标准

55511122是一个设备序列号,因此可以更改,或者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"
            }
        ]
    }
  }
}
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; }
}
公共类GpsData
{
公共双经度{get;set;}
公共双纬度{get;set;}
公共字符串时间{get;set;}
}
公共类\uuuu无效\u类型\uuuuu 55511122
{
公共列表gps_数据{get;set;}
}
公共类数据
{
公共uuu无效uu类型uuu 55511122 uuu无效uuu名称uuuuu 55511122{get;set;}
}
公共类根对象
{
公共字符串requestid{get;set;}
公共数据数据{get;set;}
}
我不知道如何处理我班上的无效类型错误


谢谢

在我看来,您的
数据
属性应该是
字典
,其中
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; }
}
公共类GpsData
{
公共双经度{get;set;}
公共双纬度{get;set;}
公共字符串时间{get;set;}
}
公共类GpsDataWrapper
{
公共列表gps_数据{get;set;}
}
公共类根对象
{
公共字符串requestid{get;set;}
公共字典数据{get;set;}
}

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

您需要访问JSON响应中的不同序列号吗?