文档章节

java中使用fastjson、jackson、json-lib解析JSON---妈妈再也不用担心JSON解析

j
 jason_wu_2
发布于 2017/03/22 14:24
字数 602
阅读 51
收藏 0

1、fastjson
引入包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.16</version>
</dependency>

JSON字符串转JSONObject/JSONArray
JSONObject jsonObject = JSONObject.parseObject(jsonString);
得到子节点
jsonObject .getString();
jsonObject .getArray();
jsonObject .getDate();
.....
转为javaBean
JSONObject.toJavaObject(jsonObject,JavaBean.class);
JSON字符串直接转JavaBean
JSONObject.parseObject(jsonString,javaBean.class);
JavaBean转JSON字符串
String jsonString = JSONObject.toJSONString(javaBean)

2、jackson

引入的包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.0</version>
</dependency>

JSON字符串装javaBean
objectMapper = new ObjectMapper();
JavaBean javaBean= objectMapper.readValue(jsonString, JavaBean.class);

javaBean转JSON字符串
objectMapper = new ObjectMapper();
//writeObject可以转换java对象,eg:JavaBean/Map/List/Array等

String jsonString = objectMapper.writeValueAsString(bean);

控制台打印:

jsonGenerator.writeObject(bean); 
//writeValue具有和writeObject相同的功能
objectMapper.writeValue(System.out, bean);

 

获取子节点
ObjectMapper mapper = new ObjectMapper(); 
// 读取json,将整个json作为根节点 
JsonNode node = mapper.readTree(jsonString);

node.path();
node.get();

 

1. //如果属性没有值,那么Json是会处理的,int类型为0,String类型为null,数组为[],设置这个特性可以忽略空值属性 
2. mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 
3. //让Json可以缩进,可读性更好,一般用在测试和开发阶段。 
4. mapper.configure(SerializationFeature.INDENT_OUTPUT, true); 
5. //让map的key按自然顺序排列 
6. mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); 
7. //日期输出格式 
8. SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); 
9. mapper.setDateFormat(outputFormat);

创建节点,生成JSON字符串
1. //创建一个提供所有节点的JsonNodeFactory,false表示不创建DecimalNode 
2. JsonNodeFactory factory = new JsonNodeFactory(false); 
3. 
4. // 创建JsonFactory,使用Streaming API的方式输出到控制台 
5. JsonFactory jsonFactory = new JsonFactory(); 
6. JsonGenerator generator = jsonFactory.createGenerator(System.out); 
7. ObjectMapper mapper = new ObjectMapper(); 
8. 
9. //创建节点和数据,一个ObjectNode代表一个节点对象 
10. ObjectNode node1 = factory.objectNode(); 
11. ObjectNode node2 = factory.objectNode(); 
12. node1.put("A", "a"); 
13. node1.put("B", "b"); 
14. node2.set("C", node1); 
15. 
16. // 根节点 
17. ObjectNode root = factory.objectNode(); 
18. root.put("root", "root"); 
19. root.set("children", node2); 
20. mapper.writeTree(generator, root); 
21. //输出{"root":"root","children":{"C":{"A":"a","B":"b"}}}

其他数组、list、map参考
http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html
http://blog.csdn.net/gjb724332682/article/details/51586701

 

3、json-lib
使用的包
<!--json-lib-->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.6</version>
</dependency>

JSON字符串转JSONObject/JSONArray
JSONObject jsonObject = JSONObject.fromObject(jsonString/javaBean);
得到子节点
jsonObject.getString("success")
转为javaBean
JSONObject.toBean(jsonObject,JavaBean.class);
javaBean转JSON字符串
String jsonString=jsonObject.toString();

list map参照
http://www.cnblogs.com/teach/p/5791029.html

本文转载自:http://www.cnblogs.com/jay763190097/p/6002197.html

j
粉丝 6
博文 137
码字总数 2988
作品 0
私信 提问
采用json-lib进行Map与Json转换

Json转换工具实在之多,最近又听说FastJson对Java序列化和反序列化最优,相比 Java自带序列化、Json-lib、Jackson等。不过本人很青睐Gson,但是好像用的人也不是很多,项目中用的最多的就是垃...

learn_more
2015/03/13
5.3K
0
有效选择七个关于 Java 的 JSON 开源类库

有效选择七个关于Java的JSON开源类库 April 4, 2014 By Constantin Marian Alin 翻译:无若 (英语原文:http://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-......

溪边九节
2014/04/19
12.9K
14
有效选择七个关于Java的JSON开源类库

April 4, 2014 By Constantin Marian Alin 翻译:无若 (英语原文:http://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-available-today.html) 简介 JSON是J......

无若
2014/04/19
6K
1
FastJSON 简介及其Map/JSON/String 互转

在日志解析,前后端数据传输交互中,经常会遇到 String 与 map、json、xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言、跨前后端的事实上的标准数据交互格式。应该来说各个语言...

浮躁的码农
2017/11/06
258
0
fastjson 1.1.36 发布,Java 的 JSON 库

fastjson 1.1.36 发布了,下载地址: http://repo1.maven.org/maven2/com/alibaba/fastjson/1.1.36/ fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师...

Google
2013/09/06
3.7K
17

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
36分钟前
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部