用了那么久的fastjson,只用到了里面的一部分方法,以前习惯上是用flexjson序列化,fastjson反序列化,其实fastjson本身具有的方法已经涵盖到大部分情况,下面总结一下常用的方法。
public static void main(String[] args) {
//对象序列化为String json
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code", "0");
resultMap.put("msg", "成功");
List<String> resultList = new ArrayList<String>();
resultList.add("1");
resultList.add("sjkldsf");
resultMap.put("data", resultList);
String json = JSON.toJSONString(resultMap);
System.out.println(json);//输出结果为{"msg":"成功","code":"0","data":["1","sjkldsf"]}
//String json反序列化为对象
Map<String, Object> resultMap1 = JSON.parseObject(json);
System.out.println(resultMap1.get("msg"));//输出结果为 成功
List<String> resultList1 = (List<String>)resultMap1.get("data");
System.out.println(resultList1.get(1));//输出结果为 sjkldsf
//String json反序列化为JSONObject
JSONObject resultObj = JSONObject.parseObject(json);
System.out.println(resultObj.getString("msg"));//输出结果为 成功
JSONArray dataArr = resultObj.getJSONArray("data");
System.out.println(dataArr.get(1));//输出结果为 sjkldsf
//对象直接转化为JSONObject或JSONArray
JSONObject resultMapObj = (JSONObject)JSON.toJSON(resultMap);
System.out.println(resultMapObj.getString("msg"));//输出结果为 成功
JSONArray dataArr1 = resultMapObj.getJSONArray("data");
System.out.println(dataArr1.get(1));//输出结果为 sjkldsf
}
注意:上面String json反序列化为对象的例子中,fastjson只能反序列化为原来的对象类型,比如里面的data只能反序列化为List<String>格式而不能反序列化为String[]格式。
JSONObject和JSONArray就无所谓什么类型,都能把string格式的json反序列化为这两个对象,所以通常这个用的比较多。
对象也可以通过JSON.toJSON(obj)这个方法把对象直接转化为JSONObject或JSONArray.
网友评论