FastJson簡單使用



在工做中,經常客服端需要和服務端進行通訊,眼下很是多項目都採用JSON的方式進行傳輸數據。簡單的參數可以經過手動拼接JSON字符串,但假設請求的參數過多,採用手動拼接JSON字符串,出錯率就很是大了。而且工做效率也特別低。css


我在網上看了一些開源的JSON框架,比方Google提供的Gson。Jackson,FastJson等框架。html

通過測試,我的認爲FastJson執行效率比較高。而且簡單易用。
FastJson不依賴於第三方包, 直接可以執行在Java JDK1.5之上,FastJson全然支持http://json.org的標準。支持各類JDK類型。包含基本類型、JavaBean、Collection、Map、Enum、泛型等
還支持循環引用。
FastJson項目是開源的:Fastjson代碼託管在github.org上,項目地址是 https://github.com/AlibabaTech/fastjsonjava

一個JSON庫涉及的最基本功能就是序列化和反序列化。git

Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON這個類進行序列化和反序列化。github


一。簡單的序列化
json

pubic class UserInfo implements Serializable{
 private String name;
 private int age;
 public void setName(String name){
  this.name=name;
 }
 public String getName(){
  return name;
 }
 
 public void setAge(int age){
  this.age=age;
 }
 public int getAge(){
  return age;
 }
} 

public class TestOne{
 
 public static void 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);
 }

}

二.複雜的數據類型框架

post

public static void 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); }

三.反序列化this

public void test3(){

 String json="{\"name\":\"chenggang\",\"age\":24}";
 //反序列化
 UserInfo userInfo=JSON.parseObject(json,UserInfo.class);
 System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());
 
}
/**泛型的反序列化*/
public static void 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字符串中可以嵌套各類數據類型。code


四.日期格式化

public void 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的方法的說明,進行選擇。

相關文章
相關標籤/搜索