Gson解析json数据

由于前面一直在给项目里面加入其他的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

你可能感兴趣的:(Gson解析json数据)