博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中使用fastjson、jackson、json-lib解析JSON---妈妈再也不用担心JSON解析
阅读量:5747 次
发布时间:2019-06-18

本文共 3973 字,大约阅读时间需要 13 分钟。

hot3.png

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

转载于:https://my.oschina.net/u/2246951/blog/864687

你可能感兴趣的文章
Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)
查看>>
OpenMediaVault 搭建git,ssh无法连接问题
查看>>
java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
查看>>
mysql性能优化学习笔记-参数介绍及优化建议
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
《树莓派渗透测试实战》——1.1 购买树莓派
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
深入理解自定义Annotation,实现ButterKnif小原理
查看>>
排序高级之交换排序_冒泡排序
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>