反序列化对象C#
我有以下json:反序列化对象C#,c#,arrays,json,json.net,C#,Arrays,Json,Json.net,我有以下json: { "coord":{"lon":-88.92,"lat":44.46}, "weather":[{"id":600,"main":"Snow","description":"light snow","icon":"13d"}], "main":{"temp":271.72,"pressure":1009,"humidity":73,"temp_min":269.15,"temp_max":273.15}, "name":"XXXXX", }
{
"coord":{"lon":-88.92,"lat":44.46},
"weather":[{"id":600,"main":"Snow","description":"light snow","icon":"13d"}],
"main":{"temp":271.72,"pressure":1009,"humidity":73,"temp_min":269.15,"temp_max":273.15},
"name":"XXXXX",
}
我正试图用C#反序列化这些类:
public class weatherClass
{
[JsonProperty("name")]
public string Name { get; set;}
[JsonProperty("main")]
public Info Main { get; set;}
[JsonProperty("weather")]
public List<InfoWeather> Weather { get; set; }
}
public class Info{
public string temp { get; set;}
public string pressure { get; set;}
}
public class InfoWeather {
public string description { get; set;}
public string main { get; set;}
}
如果我使用weatherlass.Weather.description
/*更改类定义以使用正确的大小写名称,然后使用newtonsoft提供的驼峰大小写转换器*/
公务舱
{
公共字符串名称{get;set;}
公共信息主{get;set;}
公共天气列表{get;set;}
}
公共类信息
{
公共字符串Temp{get;set;}
公用管柱压力{get;set;}
}
公共课资讯天气
{
公共字符串说明{get;set;}
公共字符串Main{get;set;}
}
var jsonSerializerSettings=new jsonSerializerSettings{ContractResolver=new CamelCasePropertyNamesContractResolver()};
var weatherClass=Newtonsoft.Json.JsonConvert.DeserializeObject(Json,jsonSerializerSettings);
您需要提供一个可以显示您的问题的列表。或者从另一个角度来看,我应该能够将您的代码复制并粘贴到VS或LINQPad中并运行它代码>如果我使用weatherlass.Weather.description
。它返回错误!请您编辑您的问题,以包括额外的文本和图像-不要在外部链接到图像,而是嵌入到问题中-并请输入用于反序列化的代码?你需要在你的问题中制作一个复制粘贴的例子。谢谢@Vincent,但我仍然有同样的问题:那么这不是一个序列化问题,因为我在这里运行它,它工作得很好。你的天气对象是一个列表。请尝试weatherClass.Weather[0]。描述完美!!谢谢这是我需要的:)
weatherResult.Text = string.Format("The city is: {0} and the description is: {1}", weatherlass.Name, weatherlass.Weather);
/*Change your class definitions to use proper case names then use the camel case converter provide by newtonsoft*/
public class WeatherClass
{
public string Name { get; set; }
public Info Main { get; set; }
public List<InfoWeather> Weather { get; set; }
}
public class Info
{
public string Temp { get; set; }
public string Pressure { get; set; }
}
public class InfoWeather
{
public string Description { get; set; }
public string Main { get; set; }
}
var jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var weatherClass = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherClass>(json, jsonSerializerSettings);