目前我们使用最多的就是用JSON方式进行数据的传输,JSON语法简单易用,可以为我们提供更快的数据解析和数据执行。
一、什么是JSON?
JSON : JavaScript Object Notation,JS对象简谱,是一种轻量级的数据交换格式.
二、JSON的格式
下面有一段JSON数据:
{
"booklist":[
{
"name":"小王子",
"info":"讲述了小王子在周游各星球的所见所闻",
"price":55,
"authorName":"安托万"
}
{
"name":"Gone with the Wind",
"info":"女主人公由稚嫩走向成熟的转变过程",
"price":80,
"authorName":"玛格丽特"
}
{
"name":"深入理解Java虚拟机",
"info":"JVM",
"price":110,
"authorName":"周志明"
}
]
}
其实所谓的JSON数据就是一段字符串,它是以键值对的形式呈现,键与值的内容通过 :分割,然后以[]、{}这样的符号进行区分就分别构成了一个数组或者一个对象,其中:
- {} 中的内容表示的是一个对象
- [] 中的内容表示的是一个数组
- 使用" "双引号表示一个属性或者值
- : 冒号的两边分别表示属性名以及属性的值,值可以是基本数据类型,也可以是引用数据类型
- [] 和 {} 可以嵌套使用
- 属性之间用 , 隔开
既然已经知道了JSON的数据格式,下面就来讲讲怎么解析。目前Java常用的解析方式有Google的Gson以及阿里巴巴的FastJson.
三、使用Gson解析JSON
创建一个BookBean类
public class BookBean {
private String name;
private String info;
private int price;
private String authorName;
@Override
public String toString() {
return "BookBean{" +
"name='" + name + '\'' +
", info='" + info + '\'' +
", price=" + price +
", authorName='" + authorName + '\'' +
'}';
}
- 将对象转成JSON数据 : toJson(Object o) ,该方法给返回一个Json字符串
public class MyJSONtoJsonString {
public static void main(String[] args) {
//Gson--toJson : 对象 转 JSON
// 初始化一个BookBean对象
BookBean book = new BookBean("小王子","讲述了小王子在周游各星球的所见所闻",55,"安托万");
// 创建一个Gson对象
Gson gson = new Gson();
// 调用方法
String jsonString = gson.toJson(book);
System.out.println(jsonString);
}
}
- 将JSON转成对象 : fromJson(String json,Class classOfT) ,该方法返回一个T类型的对象
Gson--fromJson : Json 转 对象
//创建一个Gson对象
Gson gson = new Gson();
// 调用方法
BookBean book = gson.fromJson("{\"name\":\"小王子\",\"info\":\"讲述了小王子在周游各星球的所见所闻\",\"price\":55,\"authorName\":\"安托万\"}", BookBean.class);
System.out.println(book);
四、使用FastJson解析JSON
- 对象转JSON:使用JSON对象调用其静态方法 toJSONString(Object o) ,该方法返回Json字符串
//FastJson--JSON.toJSONString : 对象 转 JSON
BookBean book = new BookBean("小王子","讲述了小王子在周游各星球的所见所闻",55,"安托万");
String s = JSON.toJSONString(book);
System.out.println(s);
- JSON转对象:使用JSON对象调用其静态方法 parseObject(String text,Class clazz) .
//FastJson--parseObject :JSON 转 对象
BookBean book = JSON.parseArray("{\"name\":\"小王子\",\"info\":\"讲述了小王子在周游各星球的所见所闻\",\"price\":55,\"authorName\":\"安托万\"}", BookBean.class);
System.out.println(book);
五、总结
JSON作为数据是目前网络中主流的数据传输格式之一,应用十分广泛,说是使用率达到99%一点也不勉强,相对于XML格式的数据传输会更节省流量,传输效率更高。在这两种解析方式中FastJson是效率最高的,推荐使用。