1. 程式人生 > >JSON.parseObject和JSON.toJSONString詳細說明

JSON.parseObject和JSON.toJSONString詳細說明

例如:首先用maven引入fastjson(java有四種JSON解析方法,感興趣的可以瞭解下)

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.58</version>
   <scope>compile</scope>
</dependency>

定義一個model類

public class Staff {
   private String name;
   private int age;
   private String sex;
   private Date birthday;

測試這兩個方法,這裡故意在Json字串中多了一個telephone,少了一個Staff中的birthday,看輸出的物件會有什麼變化。

public static void main(String args[]) {
   //json字串轉化為物件
   String jsonString = "{name:'yxs',age:23,sex:'man',telephone:'12346'}";
   Staff staff = JSON.parseObject(jsonString, Staff.class);
   System.out.println(staff.toString());
   //物件轉化為json字串

   String string = JSON.toJSONString(staff);
   System.out.println(string);

}

輸出的結果

Staff{name='yxs', age=23, sex='man', birthday=null}
{"age":23,"name":"yxs","sex":"man"}
總結:在JSON。parseObject的時候,回去填充名字相同的屬性,對於Json字串中沒有,而model類中有的屬性,會為null,對於model類中沒有,而json字串中有的屬性,不做任何處理

至於JSON.toJSONString,看結果。

應用場景:比方說,使用者登陸微信公眾號的時候,呼叫微信官方的restful介面,得到該使用者的所有資訊的一個Json字串,然後寫一個類(將自己需要的資訊封裝成一個類)例如下面的程式碼:

String s = httpRequest.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token","appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code");
UserAuthorizationReturn userAuthorizationReturn = JSON.parseObject(s, UserAuthorizationReturn.class);

注意:如果需要對list進行json的轉化,轉成json字串的方式沒有區別,但是從json字串轉化list時,需要使用JSON.parseArray方法

String jsonStr = JSON.toJSONString(tableInfoVO.getFieldInfo());
List<FiledInfoVO> filedInfoVOList = JSON.parseArray(jsonStr,