和XML没什么区别,都是用作数据的交互,但在与浏览器的交互中通常都用JSON,也可以用XML,不过JS对JSON的支持好很多,并且 JSON字符串比XML文档显得干净些、体积更小。
{}:表示对象
[]:表示数组
Gson:是一个简单的基于Java的库,用于将Java对象序列化为JSON,也可以把JSON转换为Java对象。它是Google开发的开源库。
为什么使用Gson:
Gson的特点:
Gson的使用:
如果是maven工程,引入坐标即可
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency>
如果是普通的java项目,导入jar包即可
gson-2.8.5.jar
①将Java对象转为JSON
/** * 将对象转为json */ @Test void test1() { //创建student对象 Student stu = new Student("1001","张三",20); //创建Gson对象 Gson gson = new Gson(); //将对象转为json String json = gson.toJson(stu); //{"id":"1001","name":"张三","age":20} System.out.println(json); }
②将JSON转换为Java对象
/** * 将json转为对象 */ @Test void test2() { //创建Gson对象 Gson gson = new Gson(); //将json转为对象 Student student = gson.fromJson("{\"id\":\"1001\",\"name\":\"张三\",\"age\":20}", Student.class); //Student(id=1001, name=张三, age=20) System.out.println(student); }
③有特殊格式的JSON数据转为集合
/** * json中有特殊格式的数据 * {"id":"1001","name":"张三","age":20,"num":["一二三","二三四","四五六"]} */ @Test void test3() { //创建Gson对象 Gson gson = new Gson(); //将json转为map集合 Map map = gson.fromJson("{\"id\":\"1001\",\"name\":\"张三\",\"age\":20,\"num\":[\"一二三\",\"二三四\",\"四五六\"]}", Map.class); //类型是集合 class java.util.ArrayList System.out.println(map.get("num").getClass()); //[一二三, 二三四, 四五六] System.out.println(map.get("num")); }
FastJson是阿里巴巴的的开源库,也是用于对JSON格式的数据进行解析和打包。
特点:
FastJson的使用:
如果是maven工程,引入坐标即可
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version> </dependency>
如果是java工程,导入jar包即可
fastjson-1.2.73.jar
①将对象转为JSON
/** * 将对象转为json */ @Test void test1() { //创建student对象 Student stu = new Student("1001","张三",20); //将对象转为json String jsonString = JSON.toJSONString(stu); //{"age":20,"id":"1001","name":"张三"} System.out.println(jsonString); }
②将JSON转为对象
/** * 将json转为对象 */ @Test void test2() { //将json转为对象 Student stu = JSON.parseObject("{\"age\":20,\"id\":\"1001\",\"name\":\"张三\"}", Student.class); //Student(id=1001, name=张三, age=20) System.out.println(stu); }
③将JSON转为集合
/** * 将json转为集合 */ @Test void test3() { //将json格式的数组转为集合 List<String> list = JSON.parseArray("[\"一二三\",\"二三四\",\"四五六\"]", String.class); //[一二三, 二三四, 四五六] System.out.println(list); }