FastJson簡單使用(轉載)
阿新 • • 發佈:2019-01-06
在工作中,經常客服端需要和服務端進行通訊,目前很多專案都採用JSON的方式進行資料傳輸,簡單的引數可以通過手動拼接JSON字串,但如果請求的引數過多,採用手動拼接JSON字串,出錯率就非常大了。並且工作效率也特別低。
我在網上看了一些開源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。
經過測試,個人覺得FastJson執行效率比較高,而且簡單易用。
FastJson不依賴於第三方包, 直接可以執行在Java JDK1.5之上,FastJson完全支援http://json.org的標準,支援各種JDK型別,包括基本型別、JavaBean、Collection、Map、Enum、泛型等
還支援迴圈引用。
FastJson專案是開源的:Fastjson程式碼託管在github.org上,專案地址是 https://github.com/AlibabaTech/fastjson
一個JSON庫涉及的最基本功能就是序列化和反序列化。Fastjson支援java bean的直接序列化。使用com.alibaba.fastjson.JSON這個類進行序列化和反序列化。
一。簡單的序列化
- pubic class UserInfo implements Serializable{
- private String name;
- privateint age;
- publicvoid setName(String name){
- this.name=name;
- }
-
public
- return name;
- }
- publicvoid setAge(int age){
- this.age=age;
- }
- publicint getAge(){
- return age;
- }
- }
- publicclass TestOne{
- publicstaticvoid main(String[] args){
- UserInfo info=new UserInfo();
- info.setName("zhangsan");
- info.setAge(24);
-
//將物件轉換為JSON字串
- String str_json=JSON.toJSONString(info);
- System.out.println("JSON="+str_json);
- }
- }
二.複雜的資料型別
- publicstaticvoid test2() {
- HashMap<String, Object> map = new HashMap<String, Object>();
- map.put("username", "zhangsan");
- map.put("age", 24);
- map.put("sex", "男");
- //map集合
- HashMap<String, Object> temp = new HashMap<String, Object>();
- temp.put("name", "xiaohong");
- temp.put("age", "23");
- map.put("girlInfo", temp);
- //list集合
- List<String> list = new ArrayList<String>();
- list.add("爬山");
- list.add("騎車");
- list.add("旅遊");
- map.put("hobby", list);
- /*JSON序列化,預設序列化出的JSON字串中鍵值對是使用雙引號,如果需要單引號的JSON字串,[eg:String jsonString = JSON.toJSONString(map, SerializerFeature.UseSingleQuotes);]
- *fastjson序列化時可以選擇的SerializerFeature有十幾個屬性,你可以按照自己的需要去選擇使用。
- */
- String jsonString = JSON.toJSONString(map);
- System.out.println("JSON=" + jsonString);
- }
三.反序列化
- publicvoid test3(){
- String json="{\"name\":\"chenggang\",\"age\":24}";
- //反序列化
- UserInfo userInfo=JSON.parseObject(json,UserInfo.class);
- System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());
- }
- /**泛型的反序列化*/
- publicstaticvoid test4(){
- String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}";
- Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){});
- System.out.println(map.get("user"));
- }
//同理, json字串中可以巢狀各種資料型別。
四.日期格式化
- publicvoid test5(){
- Date date=new Date();
- //輸出毫秒值
- System.out.println(JSON.toJSONString(date));
- //預設格式為yyyy-MM-dd HH:mm:ss
- System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));
- //根據自定義格式輸出日期
- System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));
- }
這裡舉了幾個簡單的例子, 其它特殊要求可以根據FastJson的方法的說明,進行選擇。