fastJson 是阿里巴巴 開源的json處理工具。使用面向對象與註解的方式,很容易使用。
兩個基本的方法:
對象序列化爲json串 String jsonStr = JSON.toJSONString(obj);
json串反序列化爲對象:Object obj = JSON.parseObject(jsonStr,Object.class); //Object 可以爲任意對象
實體類映射實例:
1.使用註解配置實體對象
ordinal 爲順序,越小則排列越前,不配置的話則按默認排序,與字段排序不一致。
其中進行了組合,包括組合list
@JSONField(ordinal=9)
private MainVo main; //引入另外一個實體對象,其中同樣配置
@JSONField(ordinal=10)
private String AppliName;
@JSONField(ordinal=20)
private String AppliIdNo;
@JSONField(ordinal=30,format = "yyyy-MM-dd hh:mm:ss")
private Date startDate;
@JSONField(ordinal=40)
private double Premium;
@JSONField(ordinal=50)
private List<ItemKindVo> itemKindList; //引入實體對象集合,fastJSON將其處理爲數組
2. 序列化和反序列化
//序列化爲json字符
@Test
public void json4() {
PolicyVo policyVo = new PolicyVo("cai","1231",new Date(),100.89);
ItemKindVo itemKindVo = new ItemKindVo("水","er",1,100,new Date());
ItemKindVo itemKindVo2 = new ItemKindVo("菜","er",1,100,new Date());
List<ItemKindVo> list = new ArrayList<ItemKindVo>();
list.add(itemKindVo);
list.add(itemKindVo2);
policyVo.setItemKindList(list);
MainVo main = new MainVo("20000000000001","主");
policyVo.setMain(main);
String jsonStr = JSON.toJSONString(policyVo); //根據對象進行序列化
System.out.println(jsonStr);
}
//輸出結果爲
{"main":{"main1":"主","policyno":"20000000000001"},"appliName":"cai","appliIdNo":"1231","startDate":"2020-05-06 02:34:07","premium":100.89,"itemKindList":[{"kindName":"水","itemName":"er","quantity":1.0,"premium":100.0,"date":"2020-05-06 02:34:07"},{"kindName":"菜","itemName":"er","quantity":1.0,"premium":100.0,"date":"2020-05-06 02:34:07"}]}
//Json字符串反序列化爲對象
@Test
public void json5() {
String jsonStr ="{\"appliIdNo\":\"1231\",\"startDate\":\"2020-05-06 11:20:43\",\"premium\":100.89,\"itemKindList\":[{\"kindName\":\"水稻\",\"itemName\":\"er\",\"quantity\":1.0,\"premium\":100.0,\"date\":\"2020-05-06 11:20:43\"},{\"kindName\":\"蔬菜\",\"itemName\":\"er\",\"quantity\":1.0,\"premium\":100.0,\"date\":\"2020-05-06 11:20:43\"}]}\r\n" +
"";
PolicyVo policyVo = JSON.parseObject(jsonStr,PolicyVo.class); //反序列化操作
System.out.println(policyVo);
}
對象操作:
JSONObject 與 JSONArray
JSONObject 將 json串轉換爲對象進行操作
JSONArray 將 json串轉換爲多個JSONObject對象 進行操作
JSONObject jsonObject = JSON.parseObject(jsonStr); // 字符轉對象
String appliName = jsonObject.getString("appliName"); //根據key獲取內容,內容也可是部分json串
JSONArray array = JSON.parseArray(itemKindList); //字符轉對象數組
JSONObject j2 = array.getJSONObject(0); // 通過下標獲取對象
實例:
JSONObject jsonObject = JSON.parseObject(jsonStr); // 將json字符串 轉換爲JSONObject
String appliName = jsonObject.getString("appliName"); //根據Key獲取對應內容
System.out.println(appliName);
String jsonmain = jsonObject.getString("main"); //獲取其中的部分json
JSONObject jsonObjectmain = JSON.parseObject(jsonmain); // 將json字符串 轉換爲JSONObject
String main1 = jsonObjectmain.getString("main1"); //根據Key獲取對應內容
System.out.println(main1);
String itemKindList = jsonObject.getString("itemKindList"); //獲取其中的部分json 這部分是個數組
JSONArray array = JSON.parseArray(itemKindList);
JSONObject j2 = array.getJSONObject(0); // 通過下標獲取對象
String kindName = j2.getString("kindName"); //根據Key獲取對應內容
System.out.println(kindName);