我有如下 API 回應,
{
"Drivers.Pandemic.PeopleCount": {
"Value": "94",
"LastUpdatedTime": "2022-02-17T09:53:43.7418837 05:30",
"Status": "OK",
"HighLimit": 1000.0,
"LowLimit": 0.0,
"AlarmValue": null
},
"Drivers.Hospitality.Bollards": {
"Value": "1",
"LastUpdatedTime": "2022-02-17T09:53:42.5938448 05:30",
"Status": "OK",
"HighLimit": 1.0,
"LowLimit": 0.0,
"AlarmValue": null
},
"Drivers.Hospitality.FireAlarm": {
"Value": "0",
"LastUpdatedTime": "2022-02-17T09:53:02.1132161 05:30",
"Status": "OK",
"HighLimit": 1.0,
"LowLimit": 0.0,
"AlarmValue": "1"
}
}
我需要反序列化這個回應并使用 c# 列印它。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
好吧,由于您從 API 獲得的 JSON 有點奇怪,因此您需要對“正常”序列化采取一些不同的方法。
更好的方法是獲得每個元素和字典的類的幫助
班級:
public class Drivers
{
public string Value { get; set; }
public DateTime LastUpdatedTime { get; set; }
public string Status { get; set; }
public double HighLimit { get; set; }
public double LowLimit { get; set; }
public object AlarmValue { get; set; }
}
然后使用 Newtonsoft 反序列化
var myDeserializedDict= JsonConvert.DeserializeObject<Dictionary<string, Drivers>>(text);
在此之后,您在 Dictionary 中獲得了一個“正常”集合,并且可以根據需要使用它:
foreach (KeyValuePair<string, Drivers> item in myDeserializedDict)
{
Console.WriteLine(item.Key " (Status): " item.Value.Status.ToString());
Console.WriteLine(item.Key " (LastUpdated): " item.Value.LastUpdatedTime.ToString());
[...]
}
uj5u.com熱心網友回復:
使用這個表
JsonConvert.DeserializeObject<System.Data.DataTable>(JsoneFile);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432470.html
標籤:C# json json-api-response-converter
