java中使用fastjson、jackson、json-lib解析JSON-------------------妈妈再也不用担心JSON解析
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
java中使用fastjson、jackson、json-lib解析JSON-------------------妈妈再也不用担心JSON解析的更多相关文章
- 使用BeautifulSoup高效解析网页,再也不用担心睡不着觉了
BeautifulSoup是一个可以从 HTML 或 XML 文件中提取数据的 Python 库 那需要怎么使用呢? 首先我们要安装一下这个库 1.pip install beautifulsoup4 ...
- SpringBoot中使用Fastjson/Jackson对JSON序列化格式化输出的若干问题
来源 :https://my.oschina.net/Adven/blog/3036567 使用springboot-web编写rest接口,接口需要返回json数据,目前国内比较常用的fastjso ...
- 转义字符\(在hive+shell以及java中注意事项):正则表达式的转义字符为双斜线,split函数解析也是正则
转义字符 将后边字符转义,使特殊功能字符作为普通字符处理,或者普通字符转化为特殊功能字符. 各个语言中都用应用,如java.python.sql.hive.shell等等. 如sql中 "\ ...
- Java中让fastJson识别Colloction和Map中的泛型类
由于fastJson的高效性,最近采用fastJson来做序列化并存储数据,但出现了一个麻烦的问题,如果将Map<K,V>这样的类型序列化,反序列化就会不尽人意,有以下尝试: 使用JSON ...
- java中可以对时间进行加减处理,有时候不用在sql语句中处理
String ssny = (String) pd.get("ssny"); SimpleDateFormat simpleDateFormat=new SimpleDateF ...
- 妈妈再也不担心我的编码问题了。中文编码融汇贯通,windows,django,python,java,html 【转】
http://blog.csdn.net/farmer_cc/article/details/41830999 HTML编码:html文件是utf-8编码的,不确定的话用记事本打开,另存为的时候就能够 ...
- Java中提供的工具类
System.arraycopy介绍 (1).System.arraycopy用于拷贝数组 arraycopy(Object src, int srcPos, Object dest, int des ...
- 简述Java中Http/Https请求监听方法
一.工欲善其事必先利其器 做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦.本文将采 ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
随机推荐
- 一些关于Canny边缘检测算法的改进
传统的Canny边缘检测算法是一种有效而又相对简单的算法,可以得到很好的结果(可以参考上一篇Canny边缘检测算法的实现).但是Canny算法本身也有一些缺陷,可以有改进的地方. 1. Canny边缘 ...
- 【翻译】CSS水平和垂直居中的12种方法
英语原文链接 在CSS中有许多不同的方法能够做到水平和垂直居中,但很难去选择合适的那个.我会向你展示我所看到的所有的方法,帮助你在所面对的情境下选择最棒的那一个. 方法1 此方法将只能垂直居中单行文本 ...
- BootStrap入门教程 (四)
本文转自 http://www.cnblogs.com/ventlam/archive/2012/06/17/2536728.html 上讲回顾:Bootstrap组件丰富同时具有良好可扩展性,能够很 ...
- 说说JAVA之网络编程 - 爬虫
首先总结一下学习过程中所需要的类: URL类 - openConnection() URLConnection类 - connection() getInputStream() BufferedRea ...
- 查看apache,mysql,nginx,php的编译参数
查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 查看apache编译参数:cat /usr/local/apache2/build/config.nice 查看m ...
- iwebshop插件的操作
<?php class Miao extends pluginBase { //插件名字 public static function name(){ return "秒杀" ...
- 在线阅读PDF文件js插件——pdf.js
最近接到一个需求大致是这样的,要求在移动端和pc端能够在线阅读pdf文件,类似百度文库的功能. 首先想到的就是插件,github(全球最大的男性交友网站- -恩)上一大堆啊,首先找到一个PDFobje ...
- 学点Groovy来理解build.gradle代码
在写这篇博客时,搜索参考了很多资料,网上对于 Groovy 介绍的博客已经特别多了,所以也就没准备再详细的去介绍 Groovy,本来也就计划写一些自己认为较重要的点.后来发现了 Groovy 的官方文 ...
- C# 索引同时含有数字和字符串的集合 同时具备IList和IDictionary的特点
同时具备IList和IDictionary的特点的集合 [Serializable] public class MyCollection:IList { private readonly Dictio ...
- js的基本介绍
一:JavaScript简称js 他是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 二:js的用法 js :1)进行数据运算 2) 控制浏览器的一些功能 3)控制元素 +元素 +样式 +内 ...