关于Json解析问题,求大神帮忙
"future":{
"day_20160525":{
"temperature":"17℃~28℃",
"weather":"多云转晴",
"weather_id":{
"fa":"01",
"fb":"00"
},
"wind":"南风3-4 级",
"week":"星期三",
"date":"20160525"
},
"day_20160526":{
"temperature":"16℃~30℃",
"weather":"晴",
"weather_id":{
"fa":"00",
"fb":"00"
},
"wind":"北风4-5 级",
"week":"星期四",
"date":"20160526"
},
"day_20160527":{
"temperature":"18℃~32℃",
"weather":"晴",
"weather_id":{
"fa":"00",
"fb":"00"
},
"wind":"南风3-4 级",
"week":"星期五",
"date":"20160527"
},
"day_20160528":{
"temperature":"19℃~30℃",
"weather":"晴转多云",
"weather_id":{
"fa":"00",
"fb":"01"
},
"wind":"微风",
"week":"星期六",
"date":"20160528"
},
"day_20160529":{
"temperature":"19℃~31℃",
"weather":"晴转多云",
"weather_id":{
"fa":"00",
"fb":"01"
},
"wind":"微风",
"week":"星期日",
"date":"20160529"
},
"day_20160530":{
"temperature":"18℃~32℃",
"weather":"晴",
"weather_id":{
"fa":"00",
"fb":"00"
},
"wind":"南风3-4 级",
"week":"星期一",
"date":"20160530"
},
"day_20160531":{
"temperature":"19℃~30℃",
"weather":"晴转多云",
"weather_id":{
"fa":"00",
"fb":"01"
},
"wind":"微风",
"week":"星期二",
"date":"20160531"
}
}
},
关于这一段JSon应该如何解析?不能解析成数组,查询未来六日的日期,如果解析成对象,那就
需要写入每日的日期,这样又比较麻烦,请问有没有一些办法进行简单的解析,解析出未来六日
的一些天气信息?望大神帮忙
#如下是您提供的结构体#
{
"future": {
"day_20160525": {
"temperature": "17℃~28℃",
"weather": "多云转晴",
"weather_id": {
"fa": "01",
"fb": "00"
},
"wind": "南风3-4 级",
"week": "星期三",
"date": "20160525"
},
"day_20160526": {
"temperature": "16℃~30℃",
"weather": "晴",
"weather_id": {
"fa": "00",
"fb": "00"
},
"wind": "北风4-5 级",
"week": "星期四",
"date": "20160526"
}
}
}
- 您提供的JSON串中future的值被“{}”包含,所以future本身是一个对象,并非数组。只是future的值包含多个日期的天气数据,所以会被误解为数组形式。
- 重点强调:此JSON数据结构设计得比较糟糕,将
day_20160525
,day_20160526
等这类动态的值作为属性名称,非常不利于制造数据方人员的JSON构造,也不利于解析数据方人员的JSON解析。 - JSON结构的良好设计方式:**不要将属性名称设计为动态的值**。建议改造为如下两种结构之一:
#如下是我建议改造之后的结构体(一)#
{
"future": [
{
"date": "20160525",
"value": {
"temperature": "17℃~28℃",
"weather": "多云转晴",
"weather_id": {
"fa": "01",
"fb": "00"
},
"wind": "南风3-4 级",
"week": "星期三"
}
},
{
"date": "20160526",
"value": {
"temperature": "16℃~30℃",
"weather": "晴",
"weather_id": {
"fa": "00",
"fb": "00"
},
"wind": "北风4-5 级",
"week": "星期四"
}
}
]
}
#如下是我建议改造之后的结构体(二)#
{
"future": [
{
"temperature": "17℃~28℃",
"weather": "多云转晴",
"weather_id": {
"fa": "01",
"fb": "00"
},
"wind": "南风3-4 级",
"week": "星期三",
"date": "20160525"
},
{
"temperature": "16℃~30℃",
"weather": "晴",
"weather_id": {
"fa": "00",
"fb": "00"
},
"wind": "北风4-5 级",
"week": "星期四",
"date": "20160526"
}
]
}
祝您一切顺利!
这个json本身就是一个对象,你只能解析成对象,然后根据日期来处理未来6日的各个对象的数据。
这个简单,你按照每一天的天气情况,过滤把它依次给它拿出来,放到一个数组进行压缩一下就可以!
不懂你什么语言,C#有Dictionary泛型对象可以匹配你这种结构
public class WeatherDay
{
public string temperature;
public string weather;
public Hashtable weather_id;
public string wind;
public string week;
public string date;
}
public class Weather
{
public System.Collections.Generic.Dictionary<string, WeatherDay> future;
}
在js中可以解析成对象,在解析的时候通过回调函数进行过滤,按照日期过滤出未来六天的。
java 的json jar 包很多直接可以拿来用
可以使用json转成list对象,在处理,例如fastjson或者Gjson等等,很多都可以用。当然前提是你的json格式正确
多谢各位,问题解决了