簡體   English   中英

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

[英]C# RestSharp - Deserialize non standard 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"
            }
        ]
    }
  }
}

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; }
}

我不確定如何處理班級中的invalid_type錯誤。

謝謝

在我看來,您的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; }
}

然后,我個人將所有這些轉換為使用.NET命名約定,並應用屬性來指定JSON中使用的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM