【发布时间】:2018-10-03 04:10:25
【问题描述】:
我有一个 JSON 内容
[{
"LocalObservationDateTime": "2018-04-23T08:10:00+05:00",
"EpochTime": 1524453000,
"WeatherText": "Sunny",
"WeatherIcon": 1,
"IsDayTime": true,
"Temperature": {
"Metric": {
"Value": 29.6,
"Unit": "C",
"UnitType": 17
},
"Imperial": {
"Value": 85.0,
"Unit": "F",
"UnitType": 18
}
},
"MobileLink": "http://m.accuweather.com/en/pk/jamaluddinwali/259991/current-weather/259991?lang=en-us",
"Link": "http://www.accuweather.com/en/pk/jamaluddinwali/259991/current-weather/259991?lang=en-us"
}]
我的类处理这个内容如下:
class AccuWeather
{
public class RootObject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public DateTime LocalObservationDateTime { get; set; }
public int EpochTime { get; set; }
public string WeatherText { get; set; }
public int WeatherIcon { get; set; }
public bool IsDayTime { get; set; }
public Temperature Temperature { get; set; }
public string MobileLink { get; set; }
public string Link { get; set; }
}
我只是尝试通过 C# 中的以下代码 sn-p 反序列化此内容:
private AccuWeather.RootObject Parse_A(string targetURI)
{
Uri uri = new Uri(targetURI);
var webRequest = WebRequest.Create(uri);
WebResponse response = webRequest.GetResponse();
AccuWeather.RootObject wUData = null;
try
{
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
var responseData = streamReader.ReadToEnd();
// if you want all the "raw data" as a string
// just use: responseData.ToString()
wUData = JsonConvert.DeserializeObject<AccuWeather.RootObject<Class1>>(responseData);
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return wUData;
}//completed
我不确定这是反序列化 JSON 内容的正确且有效的方法。在这种情况下,任何人都可以提供有关最佳实践的一些详细信息吗? 提前感谢任何帮助!
【问题讨论】:
-
问点什么吧?
-
既然您的 JSON 是一个数组,您是否考虑过反序列化为数组而不是对象? JSON.Net 期望您的 C# 对象与 JSON 结构匹配。
标签: c# json weather-api