zoukankan      html  css  js  c++  java
  • android:json解析库的选择

    本文转自:http://iandroiddev.com/post/2011-10-08/5646446

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScriptStandard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

           Android的SDK中包含四个与JSON相关的类和一个Exceptions:JSONArray、JSONObject、JSONStringer、JSONTokener、JSONException。通过这5个类我们就可以自行对Json进行解析(使用很简单,可以网上搜索使用方法或者参照Android SDK),另外Google在Android的SDK中放入了JsonReader和JsonWriter来方便我们读写Json。但是通过他们读写Json还都要停留到手工操作上,无法直接实现Json字符串到对象、对象到Json字符串的转换,例如解析Json需要通过Key值一个一个的取Value,工作量大不说,还增加了出错的几率。有没有办法可以:直接实现Json字符串到对象、对象到Json字符串的转换?

           在Java EE中使用最广泛的是Jackson Json(据说是集成到Spring中的,我不太清楚),使用非常方便而且效率极高;另外还有两个比较有名气的是Gson和JSON-lib,某些大侠已经对它们做了对比实验,结论如下执行效率:Jackson>Gson>JSON-lib,但是鉴于我们要将解析库集成到Android应用当中,我们还要考虑一下嵌入的库的体积,分别取他们的最新版本:

    jackson-all-1.9.0.jar         1.1MB

    gson-1.7.1.jar                 174KB

    json-lib-2.4-jdk15.jar      159KB    (2010年12月开始已经停止更新了)

           通过这个比较我们几乎可以直接排除掉jackson(为了解析JSON方便而让软件增加1.1MB?),而json lib执行效率低下且已经停止了更新,我们也不希望选用。另外jackson生于Jave EE,完全符合java bean惯例是对getter进行序列化,而gson是对成员变量field进行序列化,Android恰恰是推荐开发者直接使用成员变量访问而不是用setter、getter。最终我们选择了Google出品的Gson,至于Gson如何使用,欢迎关注下一篇文章。

    相关参考:

    android SDK:android json解析

    gson:     android:使用Gon解析解析json

    jackson:   Jackson 框架,轻易转换JSON(一)

    json-lib:  JSON-lib框架,转换JSON、XML不再困难

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/mybkn/p/2508325.html
Copyright © 2011-2022 走看看