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

GSON是由谷歌官方推出的 JSON 与 Java 对象转化的 Java类库

fast-json 阿里推出的用于Android平台的库,性能很好的Java实现的JSON 解析和生成器,据说功能强大且速度超越现有的所有库

GSON用法:

1. 解析JSONObject,JSONArray

2. 将JSON实体转化为JSON数据

工程导入三个包 fastjson, gson,volley


//从豆瓣网获取数据, 在 http://www.bejson.com/ 解析查看数据
private void getData() {
StringRequest request = new StringRequest(url, new Listener<String>() {
@Override
public void onResponse(String arg0) {
Log.i(TAG, arg0); //获取完成后,在 http://www.bejson.com/ 解析查看数据
dealData(arg0);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
}
});
new Volley().newRequestQueue(getApplicationContext()).add(request);
} //处理数据
private void dealData(String result){
Gson gson = new Gson();
Book book = gson.fromJson(result, Book.class); // data 转实体
Log.i(TAG, book.getTitle() + "; "
+ book.getPublisher() + ";"
+ book.getTags().size() + ";" );
}
private String TAG = "CARLOZ";
private String url = "https://api.douban.com/v2/book/1220562"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jsonparse); getData();
}

Book属于实体类,详情,请查看代码GitHub

输出结果

08-10 21:19:22.321: I/CARLOZ(24911): {"rating":{"max":10,"numRaters":340,"average":"7.0","min":0},"subtitle":"","author":["[日] 片山恭一"],"pubdate":"2005-1","tags":[{"count":133,"name":"片山恭一","title":"片山恭一"},{"count":62,"name":"日本","title":"日本"},{"count":60,"name":"日本文学","title":"日本文学"},{"count":38,"name":"小说","title":"小说"},{"count":32,"name":"满月之夜白鲸现","title":"满月之夜白鲸现"},{"count":15,"name":"爱情","title":"爱情"},{"count":8,"name":"純愛","title":"純愛"},{"count":8,"name":"外国文学","title":"外国文学"}],"origin_title":"","image":"http:\/\/img3.douban.com\/mpic\/s1747553.jpg","binding":"平装","translator":["豫人"],"catalog":"\n      ","pages":"180","images":{"small":"http:\/\/img3.douban.com\/spic\/s1747553.jpg","large":"http:\/\/img3.douban.com\/lpic\/s1747553.jpg","medium":"http:\/\/img3.douban.com\/mpic\/s1747553.jpg"},"alt":"http:\/\/book.douban.com\/subject\/1220562\/","id":"1220562","publisher":"青岛出版社","isbn10":"7543632608","isbn13":"9787543632608","title":"满月之夜白鲸现","url":"http:\/\/api.douban.com\/v2\/book\/1220562","alt_title":"","author_intro":"","summary":"那一年,是听莫扎特、钓鲈鱼和家庭破裂的一年。说到家庭破裂,母亲怪自己当初没有找到好男人,父亲则认为当时是被狐狸精迷住了眼,失常的是母亲,但出问题的是父亲……。","price":"15.00元"}
08-10 21:19:22.371: I/CARLOZ(24911): 满月之夜白鲸现; 青岛出版社;8;

Fast-json

public class FastJsonParseActivity extends Activity {

    private String TAG = "CARLOZ";
private String url = "https://api.douban.com/v2/book/1220562"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fast_json_parse); getData();
} private void getData() {
StringRequest request = new StringRequest(url, new Listener<String>() {
@Override
public void onResponse(String arg0) {
Log.i(TAG, arg0);
dealData(arg0);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// TODO Auto-generated method stub
}
});
new Volley().newRequestQueue(getApplicationContext()).add(request);
}
// JSON data to java object
private void dealData(String result) {
Book book = JSON.parseObject(result, Book.class);
Log.i(TAG, book.getTitle() + "; "
+ book.getPublisher() + ";"
+ book.getTags().size() + ";" );
}
}

运行结果:

08-10 21:43:11.991: I/CARLOZ(28779): {"rating":{"max":10,"numRaters":340,"average":"7.0","min":0},"subtitle":"","author":["[日] 片山恭一"],"pubdate":"2005-1","tags":[{"count":133,"name":"片山恭一","title":"片山恭一"},{"count":62,"name":"日本","title":"日本"},{"count":60,"name":"日本文学","title":"日本文学"},{"count":38,"name":"小说","title":"小说"},{"count":32,"name":"满月之夜白鲸现","title":"满月之夜白鲸现"},{"count":15,"name":"爱情","title":"爱情"},{"count":8,"name":"純愛","title":"純愛"},{"count":8,"name":"外国文学","title":"外国文学"}],"origin_title":"","image":"http:\/\/img3.douban.com\/mpic\/s1747553.jpg","binding":"平装","translator":["豫人"],"catalog":"\n      ","pages":"180","images":{"small":"http:\/\/img3.douban.com\/spic\/s1747553.jpg","large":"http:\/\/img3.douban.com\/lpic\/s1747553.jpg","medium":"http:\/\/img3.douban.com\/mpic\/s1747553.jpg"},"alt":"http:\/\/book.douban.com\/subject\/1220562\/","id":"1220562","publisher":"青岛出版社","isbn10":"7543632608","isbn13":"9787543632608","title":"满月之夜白鲸现","url":"http:\/\/api.douban.com\/v2\/book\/1220562","alt_title":"","author_intro":"","summary":"那一年,是听莫扎特、钓鲈鱼和家庭破裂的一年。说到家庭破裂,母亲怪自己当初没有找到好男人,父亲则认为当时是被狐狸精迷住了眼,失常的是母亲,但出问题的是父亲……。","price":"15.00元"}
08-10 21:43:12.101: I/CARLOZ(28779): 满月之夜白鲸现; 青岛出版社;8;
// object to JSON data
private void dealData(String result) {
List<Book> books = JSON.parseObject(result, new TypeReference<List<Book>>(){});
Book book1 = new Book();
book1.setTitle("Hello CarloZ");
Book book2 = new Book();
book2.setTitle("Hello CarloZ");
Book book3 = new Book();
book3.setTitle("Hello CarloZ"); JSON.toJSON(book1); //book1 to JSON data
JSON.toJSON(books);
}

Android JSON 解析库的使用 - Gson 和 fast-json的更多相关文章

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

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  2. 常用json解析库比较及选择 fastjson & gson

    一.常用json解析库比较及选择 1.简介 fastjson和gson是目前比较常用的json解析库,并且现在我们项目代码中,也在使用这两个解析库. fastjson 是由阿里开发的,号称是处理jso ...

  3. Tomjson - 一个"短小精悍"的 json 解析库

    Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把Java对象(JavaBean)序列化为json格式字符串,将json格式字符 ...

  4. fastjson是阿里巴巴的开源JSON解析库

    fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}&q ...

  5. python 中的json解析库

    当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...

  6. Objective-C ,ios,iphone开发基础:JSON解析(使用苹果官方提供的JSON库:NSJSONSerialization)

    json和xml的普及个人觉得是为了简化阅读难度,以及减轻网络负荷,json和xml 数据格式在格式化以后都是一种树状结构,可以树藤摸瓜的得到你想要的任何果子. 而不格式化的时候json和xml 又是 ...

  7. Tomjson - json 解析库

    Tomjson - 一个"短小精悍"的 json 解析库 Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把 ...

  8. C++的Json解析库:jsoncpp和boost

    C++的Json解析库:jsoncpp和boost - hzyong_c的专栏 - 博客频道 - CSDN.NET C++的Json解析库:jsoncpp和boost 分类: 网络编程 开源库 201 ...

  9. C++的Json解析库:jsoncpp和boost(转)

    原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...

随机推荐

  1. 【转载】Manacher算法

    本文原创:http://www.cnblogs.com/BigBallon/p/3816890.html只为了记录学习,不为抄袭!http://www.felix021.com/blog/read.p ...

  2. 《A First Course in Probability》-chape4-离散型随机变量-方差

    为了描述一组数据的均值,我们引入了数学期望的概念,为了描述一组数据相对均值的波动情况,我们引入了方差. 能够看到,方差的本质也是一个期望,那么我们就能够利用期望的定义将其继续展开. 方差的一条重要性质 ...

  3. uva10829 L-Gap Substrings

    题意 给出一个长度为\(n(\leqslant 50000)\)的字符串,求形如\(\mathrm{UVU}\)形式的字串,其中\(\mathrm{V}\)的长度给定. 题解 枚举\(\mathrm{ ...

  4. HTML5事件——contextmenu 隐藏鼠标右键菜单

    在window中单击右键或在Mac中Ctrl+单击时会触发contextmenu事件,通过取消其默认动作能够提供自己定义菜单. 首先先写一个自己的菜单: <style> ul, li { ...

  5. [RxJS] Filtering operators: distinct and distinctUntilChanged

    Operator distinct() and its variants are an important type of Filtering operator. This lessons shows ...

  6. Linux 性能分析工具 nmon for Linux

    http://blog.csdn.net/defonds/article/details/41725929 http://blog.csdn.net/fansy1990/article/details ...

  7. Qt 学习之路:QStringListModel

    上一章我们已经了解到有关 list.table 和 tree 三个最常用的视图类的便捷类的使用.前面也提到过,由于这些类仅仅是提供方便,功能.实现自然不如真正的 model/view 强大.从本章起, ...

  8. Mysql新建用户和数据库并授权

    测试环境:Centos 6.3和Mysql 5.3 一.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into my ...

  9. [转] 函数编程之闭包漫谈(Closure)

    在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...

  10. fedora虚拟机中的vsftp服务配置

    最近在学习unix,但在使用ftp链接虚拟机时总是总是各种报错,查了很多资料,试了很多方法,都有一定的问题,最后也算是久病成医,这里给其他跟我一样小白提供一个比较好的解决方案希望能有所帮助. Fedo ...