最近在寫接口,死磕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的提示看它的返回值和參數來滿足自己的需求.
後期有其他發現我還會補充的,也希望大家多多留言,提出一些生僻,但實用的方法.
代碼的世界,因你我更加精彩!
碼字不易,共建和諧社會,謝謝您花時間看我的博客.