由于前面一直在给项目里面加入其他的API,所以就会遇到很多的接口返回的数据是JSON格式的,所以不得以在遗忘JSON很久以后,又要再一次来重新回顾一下JSON数据的解析.
对于JSON数据 首先要能能看懂他的格式.如果一段JSON到你面前是一片乱,我们可以使用在线的格式化工具将JSON格式化一下.这里推荐一个 网站 http://www.bejson.com/ 这个网站还提供了一些其他的工具 挺实用的.
以前都是会使用json-lib来解析json,自从google推出了Gson,使用gson来解析json数据会方便很多.
对于JSON数据我们首先要知道他的结构,然后根据我们的结构来新建我们的class.
下面我们就以百度天气的API返回的JSON数据来举例,首先我们看一下下面的数据
{
"error": 0,
"status": "success",
"date": "2014-05-10",
"results": [
{
"currentCity": "南京",
"weather_data": [
{
"date": "周六(今天, 实时:19℃)",
"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/dayu.png",
"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/dayu.png",
"weather": "大雨",
"wind": "东南风5-6级",
"temperature": "18℃"
},
{
"date": "周日",
"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/zhenyu.png",
"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",
"weather": "阵雨转多云",
"wind": "西北风4-5级",
"temperature": "21 ~ 14℃"
}
]
}
]
}
我们可以看到在最外层有4个元素,然后在results里面有2个元素,然后在weather_data里面又有几组元素
这里我们看到results weather_data 是有所不同的 他里面还带着格式一样的几组元素 有一个很明显的特点 他是以 [] 包裹的 而其他的都是以{}包裹的 这意味着 这个节点 在我们新建class的时候要把它定义为一个 arraylist 类型
下面就是我们根据这个新建的class
//以下的3个class我是一起写在了一个 工具类中 所以前面加上了 static 修饰符
static class Status{
private String error;
private String status;
private String date;
private List<Results> results;
//get/set
}
static class Results{
private String currentCity;
private List<Weather> weather_data;
//get/set
}
static class Weather{
private String date;
private String dayPictureUrl;
private String nightPictureUrl;
private String weather;
private String wind;
private String temperature;
//get/set
}
这样我们就对应的新建好了 class
下面我们将使用Gson来解析
String json = "";//获取的json数据
Gson gson = new Gson();
Status status = gson.fromJson(json, Status.class);
这样 最后我们就得到了一个 status的对象 gson已经将我们的JSON数据自动转换成了一个java对象
我们可以调用 get方法来获取相对应的值
以上就是一个简单的示例
具体的可以参考 http://git.oschina.net/bddiudiu/wechat_Spring