概述
同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 + '\'' +
'}';
}
}
