net将复杂的JSON字符串反序列化为C#数组
我已经做了一段时间了,只是越来越困惑和沮丧。在下面的代码中,我试图反序列化为一个“观察”数组。我尝试了很多东西,我知道问题出在我的模型上,但我很难找到解决办法。这是你的电话号码 这是班级结构net将复杂的JSON字符串反序列化为C#数组,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,我已经做了一段时间了,只是越来越困惑和沮丧。在下面的代码中,我试图反序列化为一个“观察”数组。我尝试了很多东西,我知道问题出在我的模型上,但我很难找到解决办法。这是你的电话号码 这是班级结构 public class Features { public int history { get; set; } } public class Response { public string version { get; set;
public class Features
{
public int history { get; set; }
}
public class Response
{
public string version { get; set; }
public string termsofService { get; set; }
public Features features { get; set; }
}
public class Date
{
public string pretty { get; set; }
public string year { get; set; }
public string mon { get; set; }
public string mday { get; set; }
public string hour { get; set; }
public string min { get; set; }
public string tzname { get; set; }
}
public class Utcdate
{
public string pretty { get; set; }
public string year { get; set; }
public string mon { get; set; }
public string mday { get; set; }
public string hour { get; set; }
public string min { get; set; }
public string tzname { get; set; }
}
public class Date2
{
public string pretty { get; set; }
public string year { get; set; }
public string mon { get; set; }
public string mday { get; set; }
public string hour { get; set; }
public string min { get; set; }
public string tzname { get; set; }
}
public class Utcdate2
{
public string pretty { get; set; }
public string year { get; set; }
public string mon { get; set; }
public string mday { get; set; }
public string hour { get; set; }
public string min { get; set; }
public string tzname { get; set; }
}
public class Observation
{
public Date2 date { get; set; }
public Utcdate2 utcdate { get; set; }
public string tempm { get; set; }
public string tempi { get; set; }
public string dewptm { get; set; }
public string dewpti { get; set; }
public string hum { get; set; }
public string wspdm { get; set; }
public string wspdi { get; set; }
public string wgustm { get; set; }
public string wgusti { get; set; }
public string wdird { get; set; }
public string wdire { get; set; }
public string pressurem { get; set; }
public string pressurei { get; set; }
public string windchillm { get; set; }
public string windchilli { get; set; }
public string heatindexm { get; set; }
public string heatindexi { get; set; }
public string precip_ratem { get; set; }
public string precip_ratei { get; set; }
public string precip_totalm { get; set; }
public string precip_totali { get; set; }
public string solarradiation { get; set; }
public string UV { get; set; }
public string softwaretype { get; set; }
}
public class Date3
{
public string pretty { get; set; }
public string year { get; set; }
public string mon { get; set; }
public string mday { get; set; }
public string hour { get; set; }
public string min { get; set; }
public string tzname { get; set; }
}
public class Utcdate3
{
public string pretty { get; set; }
public string year { get; set; }
public string mon { get; set; }
public string mday { get; set; }
public string hour { get; set; }
public string min { get; set; }
public string tzname { get; set; }
}
public class Dailysummary
{
public Date3 date { get; set; }
public Utcdate3 utcdate { get; set; }
public string meantempm { get; set; }
public string meantempi { get; set; }
public string meandewptm { get; set; }
public string meandewpti { get; set; }
public string meanwindspdm { get; set; }
public string meanwindspdi { get; set; }
public string meanwdire { get; set; }
public string meanwdird { get; set; }
public string humidity { get; set; }
public string maxtempm { get; set; }
public string maxtempi { get; set; }
public string mintempm { get; set; }
public string mintempi { get; set; }
public string maxhumidity { get; set; }
public string minhumidity { get; set; }
public string maxdewptm { get; set; }
public string maxdewpti { get; set; }
public string mindewptm { get; set; }
public string mindewpti { get; set; }
public string maxpressurem { get; set; }
public string maxpressurei { get; set; }
public string minpressurem { get; set; }
public string minpressurei { get; set; }
public string maxwspdm { get; set; }
public string maxwspdi { get; set; }
public string precipm { get; set; }
public string precipi { get; set; }
}
public class History
{
public Date date { get; set; }
public Utcdate utcdate { get; set; }
public List<Observation> observations { get; set; }
public List<Dailysummary> dailysummary { get; set; }
}
public class RootObject
{
public Response response { get; set; }
public History history { get; set; }
}
有什么建议可以让它发挥作用吗?谢谢大家。您可以通过编程在此处创建您的类:
JSON必须有效。您可以通过编程在此处创建类:
JSON必须有效。您可以通过编程在此处创建类:
JSON必须有效。您可以通过编程在此处创建类:
JSON必须有效。JSON文件的内容似乎无效,可能会丢失一个
{}
我已经尝试过这个json内容,它很有效
{"response": {
"version": "0.1",
"termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"history": 1
}
},
"history": {
"date": {
"pretty": "December 18, 2013",
"year": "2013",
"mon": "12",
"mday": "18",
"hour": "00",
"min": "00",
"tzname": "America/Denver"
}
}
}
json文件的内容似乎无效,可能会丢失
{}
我已经尝试过这个json内容,它很有效
{"response": {
"version": "0.1",
"termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"history": 1
}
},
"history": {
"date": {
"pretty": "December 18, 2013",
"year": "2013",
"mon": "12",
"mday": "18",
"hour": "00",
"min": "00",
"tzname": "America/Denver"
}
}
}
json文件的内容似乎无效,可能会丢失
{}
我已经尝试过这个json内容,它很有效
{"response": {
"version": "0.1",
"termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"history": 1
}
},
"history": {
"date": {
"pretty": "December 18, 2013",
"year": "2013",
"mon": "12",
"mday": "18",
"hour": "00",
"min": "00",
"tzname": "America/Denver"
}
}
}
json文件的内容似乎无效,可能会丢失
{}
我已经尝试过这个json内容,它很有效
{"response": {
"version": "0.1",
"termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"history": 1
}
},
"history": {
"date": {
"pretty": "December 18, 2013",
"year": "2013",
"mon": "12",
"mday": "18",
"hour": "00",
"min": "00",
"tzname": "America/Denver"
}
}
}
您发布的JSON似乎格式不完全正确。也许是你发的时候弄坏了 修复该问题后,您可能应该对对象进行如下反序列化:
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(yourJSON);
用法:
string json = File.ReadAllText("jsontest.json");
var container = JsonConvert.DeserializeObject<HistoryResponseContainer>(json);
foreach (var observation in container.history.observations)
{
// whatever you want to do with each observation
// I also gave you easier access to the date. not perfect, but better.
DateTime date = observation.date.Value;
DateTime utc = observation.utcdate.Value;
}
string json=File.ReadAllText(“jsontest.json”);
var container=JsonConvert.DeserializeObject(json);
foreach(容器中的var观测值。历史记录。观测值)
{
//无论你想对每个观察做什么
//我还让你更容易找到约会对象。虽然不完美,但更好。
DateTime日期=observation.date.Value;
日期时间utc=observation.utcdate.Value;
}
您发布的JSON格式似乎不完整。也许是你发的时候弄坏了
修复该问题后,您可能应该对对象进行如下反序列化:
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(yourJSON);
用法:
string json = File.ReadAllText("jsontest.json");
var container = JsonConvert.DeserializeObject<HistoryResponseContainer>(json);
foreach (var observation in container.history.observations)
{
// whatever you want to do with each observation
// I also gave you easier access to the date. not perfect, but better.
DateTime date = observation.date.Value;
DateTime utc = observation.utcdate.Value;
}
string json=File.ReadAllText(“jsontest.json”);
var container=JsonConvert.DeserializeObject(json);
foreach(容器中的var观测值。历史记录。观测值)
{
//无论你想对每个观察做什么
//我还让你更容易找到约会对象。虽然不完美,但更好。
DateTime日期=observation.date.Value;
日期时间utc=observation.utcdate.Value;
}
您发布的JSON格式似乎不完整。也许是你发的时候弄坏了
修复该问题后,您可能应该对对象进行如下反序列化:
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(yourJSON);
用法:
string json = File.ReadAllText("jsontest.json");
var container = JsonConvert.DeserializeObject<HistoryResponseContainer>(json);
foreach (var observation in container.history.observations)
{
// whatever you want to do with each observation
// I also gave you easier access to the date. not perfect, but better.
DateTime date = observation.date.Value;
DateTime utc = observation.utcdate.Value;
}
string json=File.ReadAllText(“jsontest.json”);
var container=JsonConvert.DeserializeObject(json);
foreach(容器中的var观测值。历史记录。观测值)
{
//无论你想对每个观察做什么
//我还让你更容易找到约会对象。虽然不完美,但更好。
DateTime日期=observation.date.Value;
日期时间utc=observation.utcdate.Value;
}
您发布的JSON格式似乎不完整。也许是你发的时候弄坏了
修复该问题后,您可能应该对对象进行如下反序列化:
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(yourJSON);
用法:
string json = File.ReadAllText("jsontest.json");
var container = JsonConvert.DeserializeObject<HistoryResponseContainer>(json);
foreach (var observation in container.history.observations)
{
// whatever you want to do with each observation
// I also gave you easier access to the date. not perfect, but better.
DateTime date = observation.date.Value;
DateTime utc = observation.utcdate.Value;
}
string json=File.ReadAllText(“jsontest.json”);
var container=JsonConvert.DeserializeObject(json);
foreach(容器中的var观测值。历史记录。观测值)
{
//无论你想对每个观察做什么
//我还让你更容易找到约会对象。虽然不完美,但更好。
DateTime日期=observation.date.Value;
日期时间utc=observation.utcdate.Value;
}
您使用的是Newtonsoft.dll还是JavascriptSerializer?我在Xamarin中使用的是.dll。以前是Mono.dll,您使用的是Newtonsoft.dll还是JavascriptSerializer?我在Xamarin中使用的是.dll。以前是Mono.dll,您使用的是Newtonsoft.dll还是JavascriptSerializer?我在Xamarin中使用的是.dll。以前是Mono.dll,您使用的是Newtonsoft.dll还是JavascriptSerializer?我在Xamarin中使用的是.dll。以前是Mono。这正是我用来创建这些类的方法。我将你的JSON粘贴到网站上,然后它被“barfed”了。你用来创建类的JSON与你的问题不一样。为了简洁起见,这是一个糟糕的复制/粘贴工作。我编辑了这篇文章,加入了我使用的链接。这正是我用来创建这些类的东西。我将你的JSON粘贴到网站上,它被“barfed”了。你用来创建类的JSON与你的问题不一样。为了简洁起见,这是一个糟糕的复制/粘贴工作。我编辑了这篇文章,加入了我使用的链接。这正是我用来创建这些类的东西。我将你的JSON粘贴到网站上,它被“barfed”了。你用来创建类的JSON与你的问题不一样。为了简洁起见,这是一个糟糕的复制/粘贴工作。我编辑了这篇文章,加入了我使用的链接。这正是我用来创建这些类的东西。我将你的JSON粘贴到网站上,它被“barfed”了。你用来创建类的JSON与你的问题不一样。为了简洁起见,这是一个糟糕的复制/粘贴工作。我编辑了帖子以包含我使用的链接。我编辑了帖子以包含指向我正在抓取的文件的链接。对我来说,这是一个草率的复制/粘贴工作。我编辑了这篇文章,以包含指向我正在抓取的文件的链接。对我来说,这是一个草率的复制/粘贴工作。我编辑了这篇文章,以包含指向我正在抓取的文件的链接。对我来说,这是一个草率的复制/粘贴工作。我编辑了这篇文章,以包含指向我正在抓取的文件的链接。那是我草率的复制/粘贴工作。谢谢你@Matt。现在,我们来谈谈清单吧。仅供参考:谢谢。我将遵循这一点。1)对C#进行建模,使其更接近JSON。不需要日期1,日期2,日期3,e