⑴ 适用于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完整的粘贴到里面,自动生成实体类