Json简介
Json(JavaScript Object Notation)是一种轻量级的数据交换格式
,比XML更小更快更容易解析。Json和XML一样是具有自我描述性,平台无关性。
举个栗子:
{
"key1":"value",
"key2":"value",
"key3":["value",["value1","value2"],{"key002":"value"}],
"key4":{"key04":"value","key05":["value1","value2"],"key06":{"key005":"value"}}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UGxVj53c-1629302380424)(C:\Users\Tanlong\AppData\Roaming\Typora\typora-user-images\image-20210818093534306.png)]
Json的数据数据格式是“键值对”(“key”:”value”),其中值(value)是可以为:数字、字符串、boolean、数组、对象、null。
Json中数组为:[value1,value2,…… ]
Json中对象为:{ “key1”:”value”,”key2”:”value”…… }
Json的数据也可以进行嵌套,数组中还可以有数组,也可以有对象;对象中还可以有数组,也可以有对象。
当Json嵌套太多时不便于阅读,可采用Json格化式工具转换为树状结构。
Json是可以和XML进行转换的,将上述栗子转换为XML如下:
<?xml version="1.0" encoding="UTF-8" ?>
<object>
<key1>value</key1>
<key2>value</key2>
<key3>value</key3>
<key3>value1</key3>
<key3>value2</key3>
<key3>
<key002>value</key002>
</key3>
<key4>
<key04>value</key04>
<key05>value1</key05>
<key05>value2</key05>
<key06>
<key005>value</key005>
</key06>
</key4>
</object>
但是Json与XML相比更小、更快更容易解析,在网络数据传输多采用Json。
在Java中,使用Json可以快速地讲java对象转换为Json字符串,也可将Json转换为java对象。java中多采用谷歌的GSON或阿里的FastJSON。
Gson初级使用
Gson是可以将java对象转换为Json字符串,也可将Json字符串转换为java对象。
Gson使用:
使用new Gson();创建Gson对象,然后在使用toJson()、fromJson()方法进行转换。
public class GsonDemo {
public static void main(String[] args) {
Student student = new Student("张三", 18);
//使用构造方法创建对象
Gson gson = new Gson();
//使用toJson(),将对象转换为Json字符串
String s = gson.toJson(student);
System.out.println(s);
//使用fromJson(),将Json字符串转换为java对象
Student student1 = gson.fromJson(s, Student.class);
System.out.println(student1);
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("张三", 18));
list.add(new Student("李三", 19));
list.add(new Student("王三", 20));
list.add(new Student("陈三", 21));
//使用toJson将列表转换为Json对象
String s1 = gson.toJson(list);
System.out.println(s1);
//使用fromJson将Jsopn字符串转换为列表,需要用new TypeToken<List<Student>>() {}.getType()获取Type对象,这是一个要注意的地方
List<Student> list1 = gson.fromJson(s1, new TypeToken<List<Student>>() {}.getType());
list1.forEach((student2)-> System.out.println(student2));
}
}
FastJSON初级使用
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 源码地址:https://github.com/alibaba/fastjson
主要特点:
-
快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
-
强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
-
零依赖(没有依赖其它任何类库除了JDK)
举例简单应用:
public class FastJson {
public static void main(String[] args) {
//使用静态方法toJSONString,将对象转换为json字符串
String json = JSON.toJSONString(new Student("张三", 18));
System.out.println(json);
//使用静态方法parseObject,将json字符串转换为对象
Student student = JSON.parseObject(json, Student.class);
System.out.println(student);
}
}