本文只做简单比较
一、项目的结构:
二、开源的框架使用的是Jackson和Gson
Jackson链接:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar
Gson链接:https://github.com/google/gson/zipball/master
三、MainActivity中使用时间差做验证:
package com.jason.jsoncompare;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import android.app.Activity;
import android.os.Bundle;
import com.google.emcomjson.Gson;
import com.google.emcomjson.GsonBuilder;
import com.google.emcomjson.reflect.TypeToken;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//生成较大的json
List<User> list = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User obj = new User();
obj.setId(i);
obj.setName("name" + String.valueOf(i));
list.add(obj);
}
Gson gson = new GsonBuilder().create();
String str = gson.toJson(list);
//1、gson解析
long start1 = System.currentTimeMillis();
List<User> l = gson.fromJson(str, new TypeToken<List<User>>() {
}.getType());
System.out.println("gson time elapse:" + (System.currentTimeMillis() - start1));
System.out.println(l.size());
//2、jackson解析
ObjectMapper mapper = new ObjectMapper();
List<User> l2 = new ArrayList<User>();
long start2 = System.currentTimeMillis();
try {
l2 = mapper.readValue(str, new TypeReference<List<User>>() {});
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("jackson time elapse:" + (System.currentTimeMillis() - start2));
System.out.println(l2.size());
}
}
五、在Logcat中看结果吧。