Android中通常需要訪問伺服器,然而伺服器返回的資料很多時候都是Json格式
1、fastjson簡介
阿里巴巴FastJson是一個Json處理工具包,包括“序列化”和“反序列化”兩部分,它具備如下特徵:
速度最快,測試表明,fastjson具有極快的效能,超越任其他的Java Json parser。包括自稱最快的JackJson;
功能強大,完全支援JavaBean、集合、Map、日期、Enum,支援範型,支援自省;無依賴,能夠直接執行在Java SE 5.0以上版本;
支援Android;開源 (Apache 2.0)
2、fastjson下載地址
gitHub 下載地址 : https://github.com/alibaba/fastjson
Android jar包下載: http://repo1.maven.org/maven2/com/alibaba/fastjson/1.1.43.android/
3、常用的方法
(1) 將JsonArray字串轉化成 list 集合, 比如:
JSONArray array = 。。。。
List<ADBeen> adbeenList = new ArrayList<ADBeen>() ;
adbeenList = JSON.parseArray( array.toString() , ADBeen.class);
(2) 將JavaBean序列化為JSON文字
JSON.toJSONString( Object object )
(3) 日期格式化
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)); }
4 fastjson 解析json字串為四種型別
1. JavaBean
Person person = JSON.parseObject(jsonString, Person.class);
2. List<JavaBean>
List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
3. List<String>
List<String> listString = JSON.parseArray(jsonString, String.class);
4. List<Map<String,Object>>
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
(注意:此處可看出fastjson反射機制比gson更準確, id = 1001 通過fastjson反射仍是 id = 1001 , 而通過gson反射結果 為 id =1001.0 ,
參考前篇程式執行結果圖GSON方式生成和解析json資料)
5、List集合轉化為JSON字串
package com.app;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private String name ;
private String age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
User user1 = new User() ;
user1.setName( "jack" ) ;
user1.setAge( "30" );
User user2 = new User() ;
user2.setName( "sam" ) ;
user2.setAge( "45" );
List<User> list = new ArrayList<User>() ;
list.add( user1 ) ;
list.add( user2 ) ;
HashMap<String, Object> map = new HashMap<String, Object>();
map.put( "data", list ) ;
String string = JSON.toJSONString( map ) ;
System.out.println( "ssss" + string );
執行結果:{"data":[{"age":"30","name":"jack"},{"age":"45","name":"sam"}]}