{
"results": [{
"location": {
"id": "WX4FBXXFKE4F",
"name": "北京",
"country": "CN",
"path": "北京,北京,中国",
"timezone": "Asia/Shanghai",
"timezone_offset": "+08:00"
},
"daily": [{ //返回指定days天数的结果
"date": "2015-09-20", //日期
"text_day": "多云", //白天天气现象文字
"code_day": "4", //白天天气现象代码
"text_night": "晴", //晚间天气现象文字
"code_night": "0", //晚间天气现象代码
"high": "26", //当天最高温度
"low": "17", //当天最低温度
"precip": "0", //降水概率,范围0~100,单位百分比
"wind_direction": "", //风向文字
"wind_direction_degree": "255", //风向角度,范围0~360
"wind_speed": "9.66", //风速,单位km/h(当unit=c时)、mph(当unit=f时)
"wind_scale": "" //风力等级
}, {
"date": "2015-09-21",
"text_day": "晴",
"code_day": "0",
"text_night": "晴",
"code_night": "0",
"high": "27",
"low": "17",
"precip": "0",
"wind_direction": "",
"wind_direction_degree": "157",
"wind_speed": "17.7",
"wind_scale": "3"
}, {
}],
"last_update": "2015-09-20T18:00:00+08:00" //数据更新时间(该城市的本地时间)
}]
}
如果我想得到name:北京 该怎么写java代码呢?
package com.six;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JSONParse {
private static String jsonString = "{\"results\":[{\"location\":{\"id\":\"WX4FBXXFKE4F\",\"name\":\"北京\",\"country\":\"CN\",\"path\":\"北京,北京,中国\",\"timezone\":\"Asia/Shanghai\",\"timezone_offset\":\"+08:00\"},\"daily\":[{\"date\":\"2015-09-20\",\"text_day\":\"多云\",\"code_day\":\"4\",\"text_night\":\"晴\",\"code_night\":\"0\",\"high\":\"26\",\"low\":\"17\",\"precip\":\"0\",\"wind_direction\":\"\",\"wind_direction_degree\":\"255\",\"wind_speed\":\"9.66\",\"wind_scale\":\"\"},{\"date\":\"2015-09-21\",\"text_day\":\"晴\",\"code_day\":\"0\",\"text_night\":\"晴\",\"code_night\":\"0\",\"high\":\"27\",\"low\":\"17\",\"precip\":\"0\",\"wind_direction\":\"\",\"wind_direction_degree\":\"157\",\"wind_speed\":\"17.7\",\"wind_scale\":\"3\"},{}],\"last_update\":\"2015-09-20T18:00:00+08:00\"}]}";
public static void main(String[] args) {
JSONObject json = JSON.parseObject(jsonString);
JSONArray jsonArray = json.getJSONArray("results");
List<JSONObject> lists = JSONArray.parseArray(jsonArray.toJSONString(), JSONObject.class);
for (JSONObject item : lists) {
for (String key : item.keySet()) {
if (key.equals("location")) {
JSONObject location_json = item.getJSONObject("location");
// print the value of name
if (location_json.containsKey("name")) {
System.out.println(location_json.getString("name"));
}
return;
}
}
}
}
}
maven dependency
如果不是使用maven编译项目,请手动引入com.alibaba.fastjson依赖包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
定义一个结构相同的类,用gson包解析成对象,或者用JsonObject转
用fastjson,jackson,net.sf.json都可以。
我举个jackson的例子吧:
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.util.Map;
/**
fastjson的例子:
import com.alibaba.fastjson.JSONObject;
/**
class Test{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
其他json就不一一举例了,希望对你有帮助
定义数据结构也是可以的,但是使用jsonObject是万能的可变数据结构
使用这个在线json转java实体网站就知道
http://json2java.azurewebsites.net/
或者在ANDROID STUDIO下载GSON FORMAT
二楼解析方式正解,参考就行