我想使用RestSharp反序列化使用数组反序列化JSON。
public class details
{
public string id { get; set; }
public string tran_id { get; set; }
public string tran_type { get; set; }
public string tran_status { get; set; }
public string expiry_date_time { get; set; }
public string number { get; set; }
}
我的JSON如下:
{
"details": [
{
"id": "ebca66079b44",
"tran_id": "c9b1bce025f5",
"tran_type": "A",
"tran_status": "B",
"expiry_date_time": "2018-11-26T06:33:04+00:00",
"number": "12345678ABC"
},
{
"id": "ebca66079b44",7c2445c8-a5ba-4ad2-a38e-3ea682c60edf",
"tran_id": "3ea682c60edf",
"tran_type": "A",
"tran_status": "B",
"expiry_date_time": "2018-11-26T06:26:28+00:00",
"number": "22345678ABC"
},
{
"id": "ebca66079b44",
"tran_id": "e40c45817985",
"tran_type": "A",
"tran_status": "B",
"expiry_date_time": "2018-11-26T06:26:06+00:00",
"number": "32345678ABC"
}
]
}
我的代码是:
IRestResponse response = client.Execute(request);
//Deserialize Json
return new JsonDeserializer().Deserialize<List<details>>(response);
我可以得到“详细信息”,但不能得到对象内部的列表。
答案 0 :(得分:1)
您需要使用包含JSON数组数据的对象,因为最外层是对象而不是数组。
public class JsonModel
{
public List<Detail> details { get; set; }
}
public class Detail
{
public string id { get; set; }
public string tran_id { get; set; }
public string tran_type { get; set; }
public string tran_status { get; set; }
public string expiry_date_time { get; set; }
public string number { get; set; }
}
这样使用。
new JsonDeserializer().Deserialize<JsonModel>(response);
注意
有一个json数据可能会从"ebca66079b44",7c2445c8-a5ba-4ad2-a38e-3ea682c60edf",
数据中引发错误。
有两种方法可以轻松地创建模型。
您可以在Visual Studio中使用Web Essentials,使用“编辑”>“选择性粘贴”>将JSON粘贴为类,可以更轻松地了解Json与模型之间的关系。
如果您不能使用Web Essentials,则可以代替使用https://app.quicktype.io/?l=csharp在线JSON到Model类。
您可以尝试使用这些模型来携带JSON格式。