Map與Json之間的轉換(fastjson)

最近在寫接口,死磕json,這在以前是不怎麼接觸的,但是網上的文章對我來說不是很全面,花了一週的時間查資料,使用,總結了一些小經驗,所以記錄下來,給大家作參考,有什麼不足的地方也歡迎大家來補充說明.

之前使用的是net.sf.json.包下的JsonObject,但是有很多功能是沒有的,所以我使用的是阿里的fastjson

使用之前記得首先在pom.xml文件中導入fastjson的依賴(前提是maven項目)

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.30</version>
 </dependency>

      這樣重啓項目就可以直接使用了

1.Map,List,.對象.....轉json類型的字符串(注意:這個方法是轉化爲json對象,不是json數組)

//JSONObject的toJSONString方法可以把任何類型轉化爲json類型的字符串

String jSONObject=JSONObject.toJSONString(object)

//就是這麼方便又強大!

2.取值

取值其實很簡單,但是有時候很難,你根本不知道對方當初怎麼存的值.

   2.1  map集合裏存對象,對象裏存list集合      

//首先將String轉爲jsonObject纔好操作
JSONObject fromObject = JSONObject.parseObject(jsonString);

//從json中分層取出裏面key爲list的值
JSONObject object = fromObject.getJSONObject("list");

//這一步就是取出list集合值的步驟
list = (List<ClaimReportDataCheckResponse>) object.get("list");

//如果你想取出list集合裏的值可以進行便利,很簡單,就不寫了

   

  2.2  JSONObject轉對象       

//這個方法的第一個參數是JSONObject對象 ,第二個參數是實體類的.class類

JSONObject.toJavaObject(json, clazz)

//這個是代碼例子

ClaimReportData c =new ClaimReportData ();   //實體類

//這是把String類型json轉爲jsonobject

JSONObject responsePic = JSONObject.parseObject(jsonStringPic);  

JSONObject jsonObject = responsePic.getJSONObject("ClaimPicList");//前面獲取到的JSONObject對象 

c= JSONObject.toJavaObject(jsonObject , ClaimReportData .class);



//當然還有很多其他的方法,大家可以多試驗幾種

 

3.最重要的一個作用,時間格式轉化

     Date時間轉jaon格式會發生格式變化,遇到你們就會糾結了,這裏提前注意一下,也是我爲什麼要用fastjson

     處理格式錯亂的方法:

//在你實體類每個date屬性上都添加註解@jsonfield  時間格式根據自己需要設置

@JSONField(format="yyyy-MM-dd HH:mm:ss")
	private Date updateTime;




//很簡單,但是很高效, 我找了兩天才找到的方法.

 

其實到這兒就差不多夠用了 ,fastjson基本滿足你所有的需要,

如果有我沒涉及到的,大家可以直接自己根據JsonObject的提示看它的返回值和參數來滿足自己的需求.

後期有其他發現我還會補充的,也希望大家多多留言,提出一些生僻,但實用的方法.

代碼的世界,因你我更加精彩!

碼字不易,共建和諧社會,謝謝您花時間看我的博客.

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章