[英]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.