Android解析JSON速度对比

Posted 大米稀饭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android解析JSON速度对比相关的知识,希望对你有一定的参考价值。

转载参考:http://blog.csdn.net/h3c4lenovo/article/details/26568531

 

 1 {
 2     "testStr":"这是String的测试",
 3     "testInt":12443,
 4     "data": [
 5         {
 6             "children": [
 7                 {
 8                     "id": 10007,
 9                     "title": "北京",
10                     "type": 1,
11                     "url": "/10007/list_1.json"
12                 },
13                 {
14                     "id": 10105,
15                     "title": "汽车",
16                     "type": 1,
17                     "url": "/10105/list_1.json"
18                 }
19             ],
20             "id": 10000,
21             "title": "新闻",
22             "type": 1
23         },
24         {
25             "id": 10002,
26             "title": "专题",
27             "type": 10,
28             "url": "/10006/list_1.json",
29             "url1": "/10007/list1_1.json"
30         },
31         {
32             "id": 10003,
33             "title": "组图",
34             "type": 2,
35             "url": "/10008/list_1.json"
36         },
37         {
38             "dayurl": "",
39             "excurl": "",
40             "id": 10004,
41             "title": "互动",
42             "type": 3,
43             "weekurl": ""
44         }
45     ],
46     "extend": [
47         10007,
48         10006,
49         10008,
50         10014,
51         10012,
52         10091,
53         10009,
54         10010,
55         10095
56     ],
57     "retcode": 200
58 }

     以下测试以上面这段JSON作为参考进行测试。

第三方JAR包:(阿里巴巴)fastjson-1.2.5.jar      (谷歌)gson-2.2.4.jar

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.util.Log;
 4 import com.alibaba.fastjson.JSON;
 5 import com.google.gson.Gson;
 6 import com.google.gson.reflect.TypeToken;
 7 
 9 public class MainActivity extends Activity {
10     public final String TAG = "MainActivity";
11 
12     Gson my_gson = new Gson();
13     java.lang.reflect.Type my_type = new TypeToken<TestBean1>() {
14     }.getType();
15 
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20 
21         new Thread(new Runnable() {
22             @Override
23             public void run() {
24                 doSth();
25             }
26         }).start();
27     }
28 
29     private void doSth() {
30         Log.i(TAG, "start...");
31         try {
32              long startTime2 = System.currentTimeMillis();
33             String json = LocalFileUtils.getStringFormAsset(this, "testbean1.json");
34             for(int n = 0;n < 100000; n++) {
35                 TestBean1 toBean =  JSON.parseObject(json, TestBean1.class);
36                 System.out.println(toBean);
37             }
38             long endTime2 = System.currentTimeMillis() - startTime2;
39             Log.i(TAG, "fastjson....." + endTime2);
40 
41 
42             long startTime4 = System.currentTimeMillis();
43             String my_json = LocalFileUtils.getStringFormAsset(this, "testbean1.json");
44             for (int n = 0; n < 100000; n++) {
45                 // 使用JSON 操作 工具将JSON字符串封装到实体类
46                 TestBean1 toBean = my_gson.fromJson(my_json, my_type);
47                 System.out.println(toBean);
48             }
49             long endTime4 = System.currentTimeMillis() - startTime4;
50             Log.i(TAG, "gson....." + endTime4);
51 
52         } catch (Exception e) {
53             e.printStackTrace();
54         }
55     }
56 
57 }

 

public class TestBean1 {
    public String testStr;
    public Integer testInt;

    public List<NewsItem> data;
    public List<Integer> extend;
    public int retcode;

    public class NewsItem {
        public List<NewsCategory> children;
        public int id;
        public String title;
        public int type;
        public String url;
        public String url1;
        public String dayurl;
        public String excurl;
        public String weekurl;

        public class NewsCategory {
            public int id;
            public String title;
            public int type;
            public String url;
        }
    }

}

 

运行结果:

gson.....122298
fastjson.....138429

 

以上是关于Android解析JSON速度对比的主要内容,如果未能解决你的问题,请参考以下文章

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

Java中哪个JSON库的解析速度是最快的

Java中哪个JSON库的解析速度是最快的

Android探索之基于okHttp打造自己的网络请求

logcat错误android studio编程片段