概述
同XML用途类似,也是一种数据交换语言,出现的时间比XML晚,现在被广泛使用。
数据格式
//JSON中的一个对象用大括号括住
{
"属性1":"值1",
"属性2":"值2"
}
//JSON的数组
[元素1,元素2...]
注意:JSON的数据存储非常灵活,除了属性必须是字符串,值包括数组的元素可以是对象,也可是数组或字符串
例如:
{
"name":[{"name":"张三","info":"法外狂徒"},"里斯"],
"info":{"name":["1","2"],"info":"数组"}
}
Java对象与JSON数据的转换
通过gson转换流程
- 引入gson.jar
2.1 将Java对象转换为JSON格式字符串
String json = new Gson().toJson(要转换的对象);//创建Gson对象调用toJson方法得到JSON格式字符串
2.2 将JSON格式字符串转换为Java对象
对象 = new Gson().fromJson(JSON格式字符串,对象类型.getClass());
通过FastJSON转换流程
- 引入fastjson.jar
2.1 将Java对象转换为JSON格式字符串
String json = JSON.toJSONString(要转换的对象);
2.2 将JSON格式字符串转换为Java对象
//转对象
对象 = JSON.parseObject(JSON字符串,类型.getClass());
//转数组
List<?> list = JSON.parseArray(JSON字符串,类型.getClass());
gson转换案例
public class JsonTest {
public static void main(String[] args) {
Person p = new Person("张三", "12");
//使用gson
//1.对象转JSON字符串
//{"name":"张三","age":"12"}
System.out.println(new Gson().toJson(p));
//2.JSON字符串转对象
String s = "{\"name\":\"张三\",\"age\":\"12\"}";
Person p2 = new Gson().fromJson(s, p.getClass());
System.out.println(p2);
}
}
class Person{
String name;
String age;
public Person(String name, String age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}