简介: JSON: Javascript Obwject Notation JS对象简谱 , 是一种轻量级的数据交换格式.
我们知道在java中使用类和类中的属性是这样的
以书“Book”为例:
class Book{
private String name;
private String info;
get/set...
}
Book b = new Book();
b.setName(“金苹果”);
b.setInfo(“种苹果”);
....
在js中是这样的:
var b = new Object(); b.name = "金苹果"; b.info = "种苹果";
在XML中是这样的:
//Book类 金苹果 //名字属性种苹果 //简介属性
而在JSON中是这样的:
{
"name":"金苹果",
"info":"种苹果"
}
从最后两个对比可以看出,JSON比XML更简洁更易于传输和调用,被现今绝大多数程序员所选择
和使用,但也有一些不便的地方,如下面这段代码:
{
"code": "10000",
"charge": false,
"msg": "查询成功",
"result": {
"status": "0",
"msg": "ok",
"result": {
"city": "安顺",
"cityid": "111",
"citycode": "101260301",
"date": "2015-12-22",
"week": "星期二",
"weather": "多云",
"temp": "16",
"temphigh": "18",
"templow": "9",
"img": "1",
"humidity": "55",
"pressure": "879",
"windspeed": "14.0",
"winddirect": "南风",
"windpower": "2级",
"updatetime": "2015-12-22 15:37:03",
"index": [
{
"iname": "空调指数",
"ivalue": "较少开启",
"detail": "您将感到很舒适,一般不需要开启空调。"
},
{
"iname": "运动指数",
"ivalue": "较适宜",
"detail": "天气较好,无雨水困扰,较适宜进行各种运动,但因气温较低,在户外运动请注意增减衣物。"
}
],
"aqi": {
"so2": "37",
"so224": "43",
"no2": "24",
"no224": "21",
"co": "0.647",
"co24": "0.675",
"o3": "26",
"o38": "14",
"o324": "30",
"pm10": "30",
"pm1024": "35",
"pm2_5": "23",
"pm2_524": "24",
"iso2": "13",
"ino2": "13",
"ico": "7",
"io3": "9",
"io38": "7",
"ipm10": "35",
"ipm2_5": "35",
"aqi": "35",
"primarypollutant": "PM10",
"quality": "优",
"timepoint": "2015-12-09 16:00:00",
"aqiinfo": {
"level": "一级",
"color": "#00e400",
"affect": "空气质量令人满意,基本无空气污染",
"measure": "各类人群可正常活动"
}
},
"daily": [
{
"date": "2015-12-22",
"week": "星期二",
"sunrise": "07:39",
"sunset": "18:09",
"night": {
"weather": "多云",
"templow": "9",
"img": "1",
"winddirect": "无持续风向",
"windpower": "微风"
},
"day": {
"weather": "多云",
"temphigh": "18",
"img": "1",
"winddirect": "无持续风向",
"windpower": "微风"
}
}
],
"hourly": [
{
"time": "16:00",
"weather": "多云",
"temp": "14",
"img": "1"
},
{
"time": "17:00",
"weather": "多云",
"temp": "13",
"img": "1"
}
]
}
}
}
这种大量的属性会让你看的时候头皮发麻,以至于根本找不到哪一个归属于哪个,当然也有解决的
方法,可以从浏览器里输入JSON的字样,随便带你进去一个,如这个网址JSON在线解析及格式化验证 - JSON.cn
可以对上面的代码进行解析,可以很好的找到相关属性的位置。
我们可以看上面的代码可以发现有许多嵌套的地方,在JSON格式中可以与对象互相嵌套 [元素1,元素2...]的方式来进行元素的嵌套。
{
"name":"老师",
"age":18,
"pengyou":["张三","李四","王二","麻子",{
"name":"宇恒学生",
"info":"在不断地学习"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}
既然是Java与JSON,那JSON又能为Java做些什么?
它可以将Java中的对象 快速的转换为 JSON格式的字符串.
它可以将JSON格式的字符串, 转换为Java的对象.
可以通过Gson和FastJson来将对象转换为JSON字符串和将JSON字符串转换为对象,这两个是常用的方式,Gson是谷歌的,FastJson是阿里的,使用时要下载和引入相应的JAR包。
//转换JSON字符串的步骤: //1. 引入JAR包 //2. 在需要转换JSON字符串的位置编写如下代码即可: //String json = new Gson().toJSON(要转换的对象); //案例: Book b = BookDao.find(); String json = new Gson().toJson(b); System.out.println(json);



