5分钟让你学会用最高效的工具解析所有Json

如果你是一个Android开发工程师,学会解析Json字符串是你的必修课,本篇文章主要以实例的方式手把手教你怎么做,花五分钟时间阅读本篇文章你就可以学会解析所有的Json字符串啦。

准备:

      • json字符串
      • fastjson
      • HiJson格式化json工具

开始教程:

      • fastjson:

        常用工作中解析json的工具类有谷歌的GSON,jackson,fastjson,这里就不做一一比较了,博主告诉大家,fastjson就是最高效最好用的,选它就没错了。FastJson出自阿里工程师之手,是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:

        • 速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson,是GSON解析速度的6倍;
        • 功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)

        下载地址:

        [fastjson jar包下载地址](http://download.csdn.net/detail/pdsyzbaozi/8199419)
        
      • HiJson:

        HiJson是一个将 json 字符串格式化的工具,非常好用,让你的json字符串结构一目了然,并且可以直接复制键值,强烈推荐!

        下载地址:

        HiJson下载地址

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。


1

2

3

4

5

6

7

8


public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray

public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject

public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean

public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray

public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本

public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本

public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

如果你从没解析过json,看不太明白没关系,现在我上面那个json字符串,手把手的教你怎么解析,学会解析这个较复杂的json串,相信其他的你也肯定也会解析了。

json串提供给大家拿去练手


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31


{

"status": "2000",

"msg": "Successful!",

"data": [{

"details": [{

"distance": 2847,

"nextLat": 39.994076,

"nextLong": 116.47764,

"nexti": "MeloDev",

"status": 4

}],

"distance": 2847,

"imageUrl": "",

"overview": "长期原创Android博客",

"source": "http://www.jianshu.com/users/f5909165c1e8/latest_articles",

"status": "SUCCESSFUL"

}, {

"details": [{

"distance": 2769,

"nextLat": 39.97691,

"nextLong": 116.46019,

"nexti": "MeloDev",

"status": 4

}],

"distance": 2769,

"imageUrl": "",

"overview": "喜欢请加关注",

"source": "http://www.jianshu.com/users/f5909165c1e8/latest_articles",

"status": "SUCCESSFUL"

}]

}

好的万事俱备,马上就开始!

把下载的fastjson的两个jar包导入libs目录下:

现在开始比较关键的一步,新建一个bean对象,去作为json解析之后的载体,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38


public class QueryResultInfo {

public String status;

public String msg;

public List<DataList> data;

public class DataList {

public int distance;

public String imageUrl;

public String overview;

public String source;

public String status;

public List<DetailsList> details;

@Override

public String toString() {

return "DataList [distance=" + distance + ", imageUrl=" + imageUrl + ", overview=" + overview + ", source=" + source + ", status=" + status + ", details=" + details.toString() + "]";

}

public class DetailsList {

public int distance;

public double nextLat;

public double nextLong;

public String nexti;

public int status;

@Override

public String toString() {

return "DetailsList [distance=" + distance + ", nextLat=" + nextLat + ", nextLong=" + nextLong + ", nexti=" + nexti + ", status=" + status + "]";

}

}

}

@Override

public String toString() {

return "QueryResultInfo [status=" + status + ", msg=" + msg + ", data=" + data.toString() + "]";

}

}

我来告诉大家,写一个解析json之后bean对象的技巧。首先观察json格式化的结果(HiJson工具右侧视图),java代码中:

      • 数据的类型、键的名称都必须与json字符串保证一一对应
        也就是例子中,每个变量都是以json的键名称命名的,不能写错,而且数据类型也必须对应,String就是String,int就是int,float就是float
      • 如果出现嵌套的数组,就写一个内部类,用同样的方式命名各个json字段,用List接收它,注意List的命名也得是用json中的键名。多层嵌套以此类推。
      • 所有变量的访问域都是public的。

好了bean对象就完成了。

我把json字符串存在了String.xml下,点击按钮之后,解析json字符串,layout文件很简单,这里就不放出了。

可以看到,我们调用JSON.parseObject(myJson,AppInfo.class)这一行代码,我们就把json字符串的所有信息都解析到了appInfo对象中,想用什么就直接取出来就可以了。

这个json字符串相对还是复杂的,多层嵌套,所以这个你都会了,简单的你也肯定没问题了,当然fastjson的强大不止于此,如果有特殊需要,再慢慢发掘吧~!

时间: 2024-09-27 21:58:22

5分钟让你学会用最高效的工具解析所有Json的相关文章

(转)大牛的《深度学习》笔记,60分钟带你学会Deep Learning。

大牛的<深度学习>笔记,60分钟带你学会Deep Learning. 2016-08-01 Zouxy 阅面科技 上期:<从特征描述到深度学习:计算机视觉发展20年> 回复“01”回顾全文   本期:大牛的<深度学习>笔记,60分钟带你学会Deep Learning. 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里,深度学习颠覆了语音识别.图像分类.文本

HTML兼容问题及高效开发工具

兼容问题及高效开发工具 1.兼容性测试工具 ①.IE Tester ②.Multibrowser 2.常用的浏览器 ①.Google chrome ②.Firefox ③.opera 3.高效的开发工具 ①.轻量级的: 1.Notepad++ 2.sbulime Text 3.记事本 ②.重量级的 1.WebStorm 2.Dreamweaver 4.网页设计工具 ①.fireworks ②.photoshop 5.判断IE的方法 注意:条件注释只有在IE浏览器下才能执行,这样就达到了我们的效果

高效管理工具推荐

1.查找文件的神器--Everything 随着学习的深入,硬盘里的文档越来越多,相应地会感觉硬盘上的文档越来越难找了.即便你之前对文件夹结构.功能及扩展做了怎样"完美"的规划,现在,一切文件又变得乱糟糟的了.这个时候,神器Everything出现了. 如其名,Everything的目标就是帮你找到Everything in your disk.支持通配符.书签及正则表达式等高级查找功能,其最大优点是:非常快!下面是查询"stdio.h"的界面,输入结束的时候结果就

打造程序员的高效生产力工具-mac篇

打造程序员的高效生产力工具-mac篇 1   概述 古语有云:“工欲善其事,必先利其器” [1] ,作为一个程序员,他最重要的生产资源是脑力知识,最重要的生产工具是什么?电脑. 在进行重要的脑力成果输出前,有必要先“利其器”,为自己打造一台专门为程序员而生的电脑生产平台.以保证自己高效地工作和产出. 本系统的主要适用群体为互联网行业的开发人员和环境配置指导,主要目的是让Mac成为程序员的重要的智力成果输出工具. 2   需求场景 3   开发环境 对于软件开发人员来说,基本上绝大多数的IDE都有

5分钟教你学会JavaScript正则表达式

正则表达式在实际开发过程中和技术面试过程中的重要性不言而喻,本文仅仅只是教你如何在几分钟之类学会正则表达式,对于它的原理及运行机制不做介绍. 第一:什么是正则 正则表达式是一种用来描述一定数量文本的模式,用来匹配相同规范样式的文本.在JavaScript中用RegExp对象表示正则表达式( 即Regular Eexpression),它是对字符串执行模式匹配的强大工具.我们可以参看W3C所给的说明. 第二:创建一个正则表达式 在JavaScript中创建正则表达式,有2种方式,隐式和显式创建. 

20分钟教你学会熟练使用ansible

运维自动化之ansible的安装与使用 随着服务器数量的增长,我们需要一个批量工具去提高工作效率,之前用的是puppet,ansible的简单,适用让我眼前一亮,决定写一篇ansible从安装到基本配置的文档供新手参阅. 一.安装1.安装第三方epel源centos 6的epel    [[email protected] ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm    [

五分钟带你学会 JavaScript 闭包

闭包,是javascript中独有的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述,直接上干货,让你分分钟学会闭包! 1 闭包–爱的初体验 在接触一个新技术的时候,我首先会做的一件事就是:找它的demo code.对于码农们来说,代码有时候比自然语言更能理解一个事物. 其实,闭包无处不在,比如:jQuery.zepto的主要代码都包含在一个大的闭包中,所以下面我先写一个最简单最原始的

三分钟带你学会 JavaScript 闭包

闭包,是javascript中独有的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述,直接上干货,让你分分钟学会闭包! 1 闭包–爱的初体验 在接触一个新技术的时候,我首先会做的一件事就是:找它的demo code.对于码农们来说,代码有时候比自然语言更能理解一个事物. 其实,闭包无处不在,比如:jQuery.zepto的主要代码都包含在一个大的闭包中,所以下面我先写一个最简单最原始的

5分钟教你学会Java properties

以前年轻的时候,总喜欢在代码中把参数的值写死,改一遍跑一遍,可移植性太糟糕了.自从用了Properties类之后,省事了,代码也规范了一点了.也就是将常用的,且经常需要修改的参数放置在xx.properties文件中,利用Java中提供的Properties类读取文件中的参数值,从而避免多次在代码中修改参数的值,一劳永逸. Properties其实是继承自HashTable,所以用起来也很简单,提供的操作主要有: load(inputStream) : 加载配置文件 store(outputSt