Android JSON:Gson,FastJson解析库的使用和对比分析(1)

Android JSON:Gson,FastJson解析库的使用和对比分析(1),第1张

Android JSON:Gson,FastJson解析库的使用和对比分析(1)

• 定义实体类

• 根据需要可以将JSON 生成单个实体或列表实体集合

  • 代码演示:

使用 Gson 解析 JsonObject

使用 Gson 解析 JsonArray

使用 Gson 将实体转为JSON 数据

  1. FastJson 简介和特点:

FastJson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。

具有极快的性能,超越任其他的Java Json parser。

• 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)

• 强大(支持普通JDK类包括任意Java Bean Class、 Collection、 Map、 Date或enum )

• 零依赖(没有依赖其它任何类库除了JDK)

• 支持注解、支持全类型序列化

  • 基本用法:

• 定义实体类

• 根据需要可以将JSON 生成单个实体或列表实体集合

  • 代码演示:

使用 FastJson 解析 JsonObject

使用 FastJson 解析 JsonArray

使用 FastJson 将实体转为JSON 数据

二、实例解析 1. Gson的基本用法

Gson有两个重要的方法,一个是 tojson(),另一个是 fromjson() 。

  • tojson() :将bean里面的内容转换为json内容。

User user=new User(“zhangsan”,19);

Gson gson=new Gson();

System.out.println(gson.toJson(user));

//打印结果是{“name”:“zhangsan”,“age”:19}

当然它还可以承担一些复杂的 *** 作,比如通过集合插入一组数据。

List list = new linkedList();

User u1 =new User(“zhangsan”,19);

list.add(u1);

User u2=new User(“lisi”,25);

list.add(u2);

Gson gson = new Gson();

System.out.println(gson.toJson(list));

//打印结果是[{“name”:“zhangsan”,“age”:19},{“name”:“lisi”,“age”:25}]

//注意,对于Json而言,[]代表数组,{}代表一个对象

当然它还可以实现更复杂的对象,比如在一个Json对象中再嵌套一个Json对象。

  • fromjson() :

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

从我们的Json对象封装出一个一个的bean对象。

User u = new User();

Gson gson = new Gson();

u = gson.fromJson("{name:‘zhangsan’,age:12}", user.class);

System.out.println(u.getName()+" "+u.getAge());

//打印结果是zhangsan 12

如果你的Json里面不止一个对象,那么你就得使用一个集合来装.

我们这里模拟一个list来装的例子,在使用list装的过程中我们会使用到一个工具类 TypeToken .

通过它我们可以 获取一个泛型的数据类型,使用方法十分简单,TypeToken<泛型>(){}.gettype()即可,返回一个Type类型,这就是fromjson()所需要的type类型,来自于reflect包。

User user = new User();

Gson gson = new Gson();

String str = “[{name:‘zhangsan’,age:12},{name:‘lisi’,age:13}]”;

// 获取一个泛型的数据类型

Type type = new TypeToken(){}.getType();

List list = gson.fromJson(str , type);

for(user u : list){

System.out.println(u.getName() + " " + u.getAge());

}

//打印结果是zhangsan 12

//lisi 13

2. Gson的实例解析

下面这段 json 代码(时间不一样获得的代码可能不一样)是豆瓣书籍的一个 api :

https://api.douban.com/v2/book/1220562

{

“rating”: {

“max”: 10,

“numRaters”: 345,

“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”: “https://img1.doubanio.com/mpic/s1747553.jpg”,

“binding”: “平装”,

“translator”: [

“豫人”

],

“catalog”: "

",

“pages”: “180”,

“images”: {

“small”: “https://img1.doubanio.com/spic/s1747553.jpg”,

“large”: “https://img1.doubanio.com/lpic/s1747553.jpg”,

“medium”: “https://img1.doubanio.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元”

}

下面我们在Android进行解析。

Project中总共有三个类:MainActivity.java , Book.java , Tag.java

public class MainActivity extends Activity {

private String url = “https://api.douban.com/v2/book/1220562”;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

getData();

}

private void getData() {

StringRequest request = new StringRequest(url, new Listener() {

@Override

public void onResponse(String arg0) {

Log.i(“info”, arg0);

dealData(arg0);

}

}, new Response.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);

Log.i(“info”, book.getTitle() + “:” + book.getPublisher() + “:”

  • book.getTags().size()); // 这里打印了tags的个数

}

}

// Log日志结果是 满月之夜白鲸现:青岛出版社:8

// 对象的变量名要与json中的相对应,这里只是选取了json中的几个“变量”进行解析

public class Book {

private String title;

private String publisher;

private String summary;

private ArrayList tags;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getPublisher() {

return publisher;

}

public void setPublisher(String publisher) {

this.publisher = publisher;

}

public String getSummary() {

return summary;

}

public void setSummary(String summary) {

this.summary = summary;

}

public ArrayList getTags() {

return tags;

}

public void setTags(ArrayList tags) {

this.tags = tags;

}

}

public class Tag {

private String count;

private String name;

private String title;

public String getCount() {

return count;

}

public void setCount(String count) {

this.count = count;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

}

3. FastJson的基本用法 1) Fastjson中的经常调用的方法

// 把JSON文本parse为JSONObject或者JSONArray

public static final Object parse(String text);

// 把JSON文本parse成JSONObject

public static final JSonObject parseObject(String text);

// 把JSON文本parse为JavaBean

public static final T parseObject(String text, Class clazz);

// 把JSON文本parse成JSONArray

public static final JSonArray parseArray(String text);

//把JSON文本parse成JavaBean集合

public static final List parseArray(String text, Class clazz);

// 将JavaBean序列化为JSON文本

public static final String toJSonString(Object object);

// 将JavaBean序列化为带格式的JSON文本

public static final String toJSonString(Object object, boolean prettyFormat);

// 将JavaBean转换为JSONObject或者JSONArray。

public static final Object toJSON(Object javaObject);

  1. 如何使用FastJson

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5660915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存