參考: http://blog.csdn.net/wx_962464/article/details/37612861html
maven庫下載 java
package test; class Cat { private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } @Override public String toString() { return "Cat [color=" + color + "]"; } };
package test; import java.util.ArrayList; import java.util.List; //主人 class Master { private String name; private List<Cat> cats = new ArrayList<Cat>(); public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Cat> getCats() { return cats; } public void setCats(List<Cat> cats) { this.cats = cats; } @Override public String toString() { return "Master [name=" + name + ", cats=" + cats + "]"; } }
package test; import java.util.List; import com.alibaba.fastjson.JSON; class FastjsonDemo { public static void main(String[] args) { Cat cat1 = new Cat(); cat1.setColor("white"); Cat cat2 = new Cat(); cat2.setColor("black"); Master master = new Master(); master.setName("bobo"); master.getCats().add(cat1); master.getCats().add(cat2); // 主人對象轉json串 String masterJson = JSON.toJSONString(master); System.out.println("master json : " + masterJson); // json串轉主人對象 Master masterObj = JSON.parseObject(masterJson, Master.class); System.out.println("master object:" + masterObj); // 構建用戶對象數組 Cat[] cats = new Cat[2]; cats[0] = cat1; cats[1] = cat2; // 數組轉JSON串 String jsonString2 = JSON.toJSONString(cats); System.out.println("array String:" + jsonString2); // JSON串轉 List<Cat> users2 = JSON.parseArray(jsonString2, Cat.class); System.out.println("array obj:" + users2); } }
master json : {"cats":[{"color":"white"},{"color":"black"}],"name":"bobo"}
master object:Master [name=bobo, cats=[Cat [color=white], Cat [color=black]]]
array String:[{"color":"white"},{"color":"black"}]
array obj:[Cat [color=white], Cat [color=black]]
當你用如下語句獲得jsonStr輸出爲空,即{}時. 要特別留意你的對象是否符合javaBean規範:json
javaBean約定get,set方法的第4個字母必定要大寫,不過google 的gson卻是不用(其實這反而不規範)數組
String jsonStr = JSON.toJSONString(master);
當初因爲公司習慣字符串以c開頭,時間以t開頭,數值以n開頭來定義屬性,如cName,tCrtTm,nAge,致使個人eclipse自動生成的get,set方法變成以下(getcName不規範),找了半小時才發現這個問題.eclipse
package test; //主人 class Master { private String cName; public String getcName() { return cName; } public void setcName(String cName) { this.cName = cName; } }
package test; //主人 class Master { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class test { public static void main(String[] args) { Map packet = new HashMap(); Map requestHead = new HashMap(); Map requestBody = new HashMap(); Map base = new HashMap(); List coverageList = new ArrayList(); Map coverage1 = new HashMap(); Map coverage2 = new HashMap(); packet.put("requestHead",requestHead ); packet.put("requestBody",requestBody ); requestHead.put("userId", "userid1234"); requestHead.put("password", "password1234"); requestHead.put("serviceNo", "serviceNo1234"); requestBody.put("base", base); base.put("basekey1", "value1"); base.put("basekey2", "value2"); base.put("basekey3", "value3"); requestBody.put("coverage_list", coverageList); coverageList.add(coverage1); coverageList.add(coverage2); coverage1.put("coverageCode1", "value1"); coverage1.put("coverageName1", "value1"); coverage2.put("coverageCode2", "value2"); coverage2.put("coverageName2", "value2"); String jsonStr = JSON.toJSONString(packet,true); System.out.println("把map轉換成json String後打印以下:"); System.out.println(jsonStr); JSONObject jsonObj = JSON.parseObject(jsonStr); JSONObject requestHeadObj = jsonObj.getJSONObject("requestBody").getJSONObject("base"); Set<Entry<String, Object>> set = requestHeadObj.entrySet(); System.out.println("jsonObj中requestBody>base節點下的各值以下:"); for(Entry<String,Object> entry :set){ System.out.println(entry.getKey()+":"+entry.getValue()); } } }
JSON.toJSONString(
retObject,
SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteDateUseDateFormat);
經常使用FastJSON的SerializerFeature特性及日期轉換格式==>https://www.cnblogs.com/xd03122049/p/6079695.htmlmaven
fastjson設置指定日期屬性的格式化==>https://blog.csdn.net/john1337/article/details/76277617ide
若是要被序列化的對象含有一個date屬性或者多個date屬性按照相同的格式序列化日期的話,那咱們可使用下面的語句實現:測試
1.JSONObject.DEFFAULT_DATE_FORMAT="yyyy-MM-dd";//設置日期格式 2.JSONObject.toJSONString(resultMap, SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteDateUseDateFormat);
可是上面的解決方案面臨一個問題,若是不知足上面的條件(多個date屬性,並且須要按照不定的格式序列化這些日期屬性),那麼咱們就須要另闢蹊徑,使用fastjson的特性來完成:this
@JSONField(format="yyyyMMdd") private Date date; @JSONField(format="yyyy-MM-dd HH:mm:ss") private Date date1;
fastjson基本使用 (待繼續完善)【原】google