Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。由阿里巴巴公司團隊開發的.html
主要特性主要體如今如下幾個方面:java
1.高性能git
fastjson採用首創的算法,將parse的速度提高到極致,超過全部json庫,包括曾經號稱最快的jackson。而且還超越了google的二進制協議protocol buf。算法
2.功能強大json
支持各類JDK類型。包括基本類型、JavaBean、Collection、Map、Enum、泛型等。數組
3.無依賴數據結構
不須要例外額外的jar,可以直接跑在JDK上。性能
4.支持範圍廣測試
5.開源google
如下是幾個簡單的例子:
// 字符串轉換成json數據
String str = "{'name':'zhang','age':20}";
String str_json1 = JSON.toJSONString(str, true);
String str_json2 = JSON.toJSONString(str, false);
System.out.println("格式化數據" + str_json1);
System.out.println("未格式化數據" + str_json2);
// json轉化簡單的實體類
String stu = "{'name':'lisi','age':22}";
Student ss = JSON.parseObject(stu, Student.class);
System.out.println(ss);
// 輸出jsonObject中的數據
JSONObject object = JSON.parseObject(stu);
System.out.println("獲取json數據中的數據 " + object.get("name") + " " + object.get("age"));
// 刪除json中的數據
String propertyName = "name";
Set set = object.keySet();
set.remove(propertyName);
// object.remove(propertyName);
System.out.println("刪除數據以後的json格式 " + object.toString());
// json轉化list集合
// String list = "[{'name':'zhang','age':20},{'name':'li','age':30}]";
// 添加屬性value值
String addPropertyName = "sex";
String addPropertyVlaue = "man";
object.put(addPropertyName, addPropertyVlaue);
System.out.println("輸出新增後的json數據 " + object.toString());
// 修改屬性的值等同於覆蓋值
String updatePropertyName = "sex";
String updatePropertyVlaue = "woman";
Set set2 = object.keySet();
if (set2.contains(updatePropertyName)) {
// object.put(updatePropertyName, JSON.toJSONString(updatePropertyVlaue));
object.put(updatePropertyName, updatePropertyVlaue);
}
System.out.println("輸出修改屬性值的json數據 " + object.toString());
// 判斷json是否存在屬性
System.out.println("是否存在屬性值id " + object.keySet().contains("id"));
// 轉換日期,這個仍是比較重要
Object date = new Date();
String date_json = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("日期處理 " + date_json);
// 解析Map集合對象
Map<String, String> map = new HashMap<String, String>();
map.put("name", "李四");
map.put("age", "20");
String map_json = JSON.toJSONString(map);
System.out.println("map轉換成json數據 " + map_json);
Map<String, String> map1 = new HashMap<String, String>();
map1.put("code", "11");
map1.put("message", "ok");
String json = JSON.toJSONString(map1);
JSONObject jsonObject = JSON.parseObject(json);
System.out.println("獲取map集合中的數據 " + jsonObject.get("code") + " " + jsonObject.get("message"));
// 解析多個對象成list集合 使用JSONArray數組
String array = "[{'name':'zhang','age':20},{'name':'wang','age':21}]";
List<Student> stu_list = new ArrayList<Student>(JSONArray.parseArray(array, Student.class));
System.out.println("輸出集合大小 " + stu_list.size());
for (Student s : stu_list) {
System.out.println("遍歷每個對象 " + s);
}
測試結果是:
格式化數據"{'name':'zhang','age':20}"
未格式化數據"{'name':'zhang','age':20}"
lisi 22
獲取json數據中的數據 lisi 22
刪除數據以後的json格式 {"age":22}
輸出新增後的json數據 {"age":22,"sex":"man"}
輸出修改屬性值的json數據 {"age":22,"sex":"woman"}
是否存在屬性值id false
日期處理 "2017-01-23 17:01:00.258"
map轉換成json數據 {"age":"20","name":"李四"}
獲取map集合中的數據 11 ok
輸出集合大小 2
遍歷每個對象 zhang 20
遍歷每個對象 wang 21
轉自:https://www.cnblogs.com/Ant-soldier
參考連接:
開源社區的fastjson技術內幕: http://www.oschina.net/question/54100_30041
各個json技術之間的比較: http://www.cnblogs.com/kunpengit/p/4001680.html