⑴ 適用於android的優秀的json解析庫有哪些
開始項目中使用的是fastjson,而且作者也說比gson快6倍,甚至嘲諷gson的g代表了「龜速」的意思,可是我自己的簡單測試是,比較簡陋的測試,一個10萬條數據的json文件,gson比fastjson快一些,快了大概80%的樣子。雖然測試可能不科學,但數據確實是我們項目中的實際數據,所以……
另外,也許是我使用真的有問題?使用的新版本的fastjson性能反而比舊的要低很多(1.2.7,1.1.44-android,1.1.33-android裡面,1.1.33反而是最快的)。
然而,最終我選擇了logan square,它的速度比fastjson快了2-3倍(自測),嗯,推薦Android開發者們使用Logan Square。
⑵ Android json解析架包(阿里巴巴的fastjson)處理是報異常。
應該是json字元串的格式有問題吧,先找找看有問題沒有,沒有的話再看解析的時候哪裡有邏輯問題沒有,不行就把報錯的那幾行代碼和json字元串貼出來,幫你看看能不能找到哪裡有問題
⑶ fastjson1.2.83支持jdk1.6嗎
支持。
fastjson支持各種JDK類型。包括基本類型、javaBean、Collection、Map、Enum、泛型等。支持JDK1.6、JDK5、JDK6、Android、阿里雲手機等環境。
Fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字元串,支持將JavaBean序列化為JSON字元串,也可以從JSON字元串反序列化到JavaBean。
⑷ 如何在Android Studio 中使用fastjson
參考如下內容:
package junit.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
/*
* 這里將json的轉化和解析都放在一起了,大家可以根據實際需要來轉化json字元串和解析json字元串
*/
public class TestFastJson {
static class Person{
private String id ;
private String name;
private int age ;
public Person(){
}
public Person(String id,String name,int age){
this.id=id;
this.name=name;
this.age=age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";
}
}
public static void main(String[] args) {
method1();
method2();
method3();
method4();
}
static void method1(){
System.out.println("javabean轉化示例開始----------");
Person person = new Person("1","fastjson",1);
//這里將javabean轉化成json字元串
String jsonString = JSON.toJSONString(person);
System.out.println(jsonString);
//這里將json字元串轉化成javabean對象,
person =JSON.parseObject(jsonString,Person.class);
System.out.println(person.toString());
System.out.println("javabean轉化示例結束----------");
}
static void method2(){
System.out.println("List<javabean>轉化示例開始----------");
Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);
List<Person> persons = new ArrayList<Person>();
persons.add(person1);
persons.add(person2);
String jsonString = JSON.toJSONString(persons);
System.out.println("json字元串:"+jsonString);
//解析json字元串
List<Person> persons2 = JSON.parseArray(jsonString,Person.class);
//輸出解析後的person對象,也可以通過調試模式查看persons2的結構
System.out.println("person1對象:"+persons2.get(0).toString());
System.out.println("person2對象:"+persons2.get(1).toString());
System.out.println("List<javabean>轉化示例結束----------");
}
static void method3(){
System.out.println("List<String>轉化示例開始----------");
List<String> list = new ArrayList<String>();
list.add("fastjson1");
list.add("fastjson2");
list.add("fastjson3");
String jsonString = JSON.toJSONString(list);
System.out.println("json字元串:"+jsonString);
//解析json字元串
List<String> list2 = JSON.parseObject(jsonString,new TypeReference<List<String>>(){});
System.out.println(list2.get(0)+"::"+list2.get(1)+"::"+list2.get(2));
System.out.println("List<String>轉化示例結束----------");
}
static void method4(){
System.out.println(" List<Map<String,Object>>轉化示例開始 ----------");
Map<String,Object> map = new HashMap<String,Object>();
map.put("key1", "value1");
map.put("key2", "value2");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("key1", 1);
map2.put("key2", 2);
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
list.add(map);
list.add(map2);
String jsonString = JSON.toJSONString(list);
System.out.println("json字元串:"+jsonString);
//解析json字元串
List<Map<String,Object>> list2 = JSON.parseObject(jsonString,new TypeReference<List<Map<String,Object>>>(){});
System.out.println("map的key1值"+list2.get(0).get("key1"));
System.out.println("map的key2值"+list2.get(0).get("key2"));
System.out.println("ma2p的key1值"+list2.get(1).get("key1"));
System.out.println("map2的key2值"+list2.get(1).get("key2"));
}
}
⑸ Android開發中應該使用哪一種主流json框架
Android開發中應該使用的主流json框架有三種,分別是gson、fastjson、jackson這三種。
各自的區別:
gson:谷歌開發的gson很受國內外人士常使用,不過使用率低於fastjson,耗費內存多。
fastjson:框架的fastjson是最小的,屬於老牌並且國內開發者經常使用,fastjson必須有默認的構造函數。
jackson:jackson屬於小眾開發者使用的,jackson的框架包是最大的。
各自的共同點:
在bean轉換為json時都有很好的轉換性。
效率都很高、佔用內存也低,但是必須在1000倍數據量級以內的前提下才能實現。
三者都使用了反射機制。
⑹ DSL、fastjson、gson、jackson、protocol buffer、Thrift、Hession、Kryo、Fst 對比
在進行不同語言或相同語言之間的數據交換時,往往需要將對象轉換為JSON格式進行持久化,以及反序列化將其還原為對象。市面上有許多流行的JSON序列化庫,各具特點與適用場景。以下是幾種常見的序列化庫之間的對比:
1. DSL-JSON:最快實現的Java版本,特別適合速度要求高的場合。
2. Ali-FastJson:阿里巴巴開源庫,支持高並發,廣泛應用於阿里巴巴內部系統。
3. Google-Gson:由Google提供,易於使用,擁有豐富的API,適用於Android和Java項目。
4. Jackson:也是由Google提供,性能出色,擁有類型安全的註解,廣泛用於Java項目。
5. Google protocol buffer:一種二進制序列化方式,效率高,適合大數據量場景,特別適合Google內部系統。
6. Apache Thrift:提供二進制與JSON兩種格式,支持多種語言,用於跨語言服務調用。
7. Hessian:一種基於XML的二進制序列化格式,支持多種語言,特別適用於分布式系統。
8. Kryo:用於高效序列化Java對象的庫,特別適用於游戲開發等性能要求高的場景。
9. Fst:一種用於跨語言的二進制格式,支持多種語言,特別適合於需要跨語言通信的場景。
10. Messagepack:一種二進制格式的序列化方式,適用於大數據量場景,體積小,速度快。
11. Jboss Marshaling:提供對象與多種序列化格式之間的轉換,支持多種語言。
在選擇序列化庫時,應考慮應用場景、性能需求、語言支持、社區活躍度等因素。JSON系列字元串提供了一種靈活且通用的數據交換格式,其豐富多樣的序列化庫為開發者提供了多樣化的選擇。
⑺ android 使用JSONObject 數組報錯, NullPointerException
錯誤是指MainActivity的第85行,你看下你代碼,如果解析出來的一個類為空,這個類在使用的時候就會報空指針,你加個非空判斷。
另外,你用的是eclipse么,如果是Android studio的話,你引入個gson或者fastjson依賴,一句話就解析完成了;還有個插件,GsonFormat,直接把JSON完整的粘貼到裡面,自動生成實體類