fastjson: json物件,json物件陣列,javabean物件,json字串之間的相互轉化
在開發過程中,經常需要和前端互動資料,資料互動的格式都是JSON,在此過程中免不了json字串與JSON物件互相轉換,自己在這一方面的概念總是很混亂,最近看原始碼和部落格,在此記錄一下。注意:全程用的是fastjson
首先JSON有兩種格式,一種是物件格式,一種是物件陣列。
在JSON使用中主要的3個類:JSON,JSONObjec,JSONArray
其中JSONObjec
和JSONArray
繼承於JSON
的。
JSON物件(JSONObject)
{"id":1,"name":"chen"}
JSON物件陣列(JSONArray)
[
{"id":1,"name":"chen"},
{"id":2,"name":"張三"}
]
下面直接進入正題:
Java Bean 和JSON字串的互轉
Java Bean 轉 JSON字串
Java Bean是指Java中的一個普通物件(實體類)例如:
public class Student{
private String name; // 姓名
private Integer age; // 年齡
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(Integer age){
this.age = age;
}
public Integer getAge(){
return age;
}
@Override
public String toString() {
return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
}
}
使用JSON
類的toJSONString()
方法,實現JSON
物件轉化為JSON
字串和Java Bean
物件轉化為JSON
字串。仔細觀察原始碼發現,該方法經過多次過載,但最終都是實現JSON
物件轉化為JSON
字串和Java Bean
物件轉化為JSON
字串。
@Test
public void BeanToJSONTest(){
Student student = new Student();
student.setName("小明");
student.setAge(20);
String s1 = JSON.toJSONString(student);
String s2 = JSONObject.toJSONString(student);
String s3 = JSONArray.toJSOnString(student);
System.out.println("s1: " + s1);
System.out.println("s2: " + s2);
System.out.println("s3: " + s3);
}
// 輸出
s1: {"age":20,"name":"小明"}
s2: {"age":20,"name":"小明"}
s3: {"age":20,"name":"小明"}
JSON.toJSONString()
、JSONObject.toJSONString
和JSONArray.toJSOnString
,上面說到JSONObject
和JSONArray
是繼承JSON
的,看JSONObject
和JSONArray
的原始碼並沒有重寫父類的toJSONString()
的方法,而是直接使用父類的toJSONString
方法,之前一直弄不明白,看了原始碼才知道。
JSON字串 轉 Java Bean
使用JSON
類的parseObject()
方法,實現JSON
字串轉換為JSON
物件或Java Bean
物件。
@Test
public void JOSNToBeanTest(){
String strJson = "{\"age\":20,\"name\":\"小明\"}";
JSONObject jsonObject = JSON.parseObject(strJson);
System.out.println("jsonObject: " + jsonObject);
Student student = JSON.parseObject(strJson,Student.class);
System.out.println("student: " + student);
}
// 輸出
jsonObject: {"name":"小明","age":20}
student: Student{name='小明', age=20}
該方法返回JSONObject
物件,用於實現JSON
字串向JSON
物件的轉化,其內部呼叫了parse()
方法,呼叫底層的DefaultJSONParse
r解析類進行轉化,在轉化失敗時,丟擲can not cast to JSONObject
異常。
該方法不僅能實現JSON
字串向JSON
物件的轉化,經過過載之後,還能實現JSON
字串向Java Bean
物件的轉化