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()方法,呼叫底層的DefaultJSONParser決議類進行轉化,在轉化失敗時,拋出can not cast to JSONObject例外,
該方法不僅能實作JSON字串向JSON物件的轉化,經過多載之后,還能實作JSON字串向Java Bean物件的轉化
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/289075.html
標籤:Java
