【Json】fastjson与jackson常用操作记录
本文只是记录fastjson、jackson一些常用的操作方法,没作比较,网上写比较的文章很多啦。
1、对象转Json串
// fastjson
String objStr = JSON.toJSONString(obj); // 默认去掉属性为Null值的 // jackson
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 默认不会去掉Null的,要自己配
String objStr = mapper.writeValueAsString(obj);
2、Json串转Json对象
// fastjson
JSONObject objJson = JSON.parseObject(objStr); // jackson
ObjectMapper mapper = new ObjectMapper();
JsonNode objJson = mapper.readTree(objStr);
3、Json串转Java对象
// fastjson
Clazz obj = JSON.parseObject(jsonStr, Clazz.class); // jackson
ObjectMapper mapper = new ObjectMapper();
Clazz obj = mapper.readValue(jsonStr, Clazz.class);
4、获取Json对象的key
// fastjson
Set<String> keySet = jsonObj.keySet();
String key = keySet.iterator().next(); // 得到第一个key // jackson
Iterator<String> keys = jsonObj.fieldNames();
String key = fieldNames.next(); // 得到第一个key
5、获取Json对象的value
// fastjson
jsonObj.get("key") // jackson
jsonObj.path("key")
6、创建一Json对象并设置key\value
// fastjson
JSONObject jsonObj = new JSONObject();
jsonObj.put("key", oldJsonObj); // jackson
ObjectMapper mapper = new ObjectMapper();
ObjectNode jsonObj = mapper.createObjectNode();
jsonObj.set("key", oldJsonObj);
在这点上,fastjson是直接一个JSONObject搞定,而jackson中JsonNode并没有直接能设置key/value的方法,这里要使用ObjectNode,jackson提供了树模型(tree model)来生成和解析json。如果想访问并对部分属性作修改的操作,树模型是很好的选择,ObjectNode继承于JsonNode,下面给个例子:
ObjectMapper mapper = new ObjectMapper();
// 创建ObjectNode
ObjectNode studentNode = mapper.createObjectNode();
// 添加属性
studentNode.put("name","xiaoming");
studentNode.put("age",18); ObjectNode addressNode = mapper.createObjectNode();
addressNode.put("street","guangzhou"); // 设置子节点
studentNode.set("addr",addressNode);
// path查找节点
JsonNode searchNode = studentNode.path("street");
// 删除属性
((ObjectNode) studentNode).remove("addr");
// 读取
JsonNode rootNode = mapper.readTree(studentNode.toString());
// JsonNode转java对象
Student student = mapper.treeToValue(studentNode, Student.class);
// java对象转JsonNode
JsonNode node = mapper.valueToTree(student);
【Json】fastjson与jackson常用操作记录的更多相关文章
- Hbase常用操作记录
Hbase常用操作记录 Hbase 创建表 查看表结构 修改表结构 删除表 创建表 语法:create <table>, {NAME => <family>, VERSI ...
- Mysql常用操作记录
在linux平台中相关的MySql操作 打开Mysql mysql -uroot -p //-u后边为用户名,-p后边为密码 1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql& ...
- 关于mac的一些常用操作记录
之前记录过一个关于mac远程连接window机,实现共享文件的记录,今天记录一些常用的操作,会持续更新. 1.谷歌浏览器 f12的操作 command+option+i 打开调试面板 2.打开指定位置 ...
- git常用操作记录
之前的多人项目大多使用了SVN作为版本控制,自己只会用eclipse连接GitHub的操作.这次项目采用了git作为版本控制系统,所以学会了很多新操作,这里权当记录,以备后用. git的一些基本操作可 ...
- 第二篇 Mysql常用操作记录(转载)
我们在创建网站的时候,一般需要用到数据库.考虑到安全性,建议使用非root用户.常用命令如下: 1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户my ...
- git -- 项目开发最常用操作记录
官方Git - Book https://git-scm.com/book/zh/v2 ------------------------------git配置以及公钥生成--------------- ...
- [skill][git] git 常用操作记录
傻瓜入门: step by step : https://try.github.io/levels/1/challenges/1 一本书: https://git-scm.com/book/en/v2 ...
- linux常用操作记录
vim:多行注释 vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率. 多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区 ...
- Webstrom 常用操作记录
WebStorm 编译 es6 与 scss 的教程: http://blog.jetbrains.com/webstorm/2015/05/ecmascript-6-in-webstorm-tran ...
随机推荐
- 深入理解数据库磁盘存储(Disk Storage)
数据库管理系统将数据存储在磁盘.磁带以及其他的裸设备上,虽然这些设备的访问速度相比内存慢很多,但其非易失性和大容量的特点使他们成为数据存储的不二之选. 本文主要讨论大型数据库产品的磁盘存储内部结构,这 ...
- 《HelloGitHub》第 37 期
公告 欢迎熟悉 C# 热爱开源的小伙伴加入我们,点此联系我 <HelloGitHub>第 37 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub ...
- python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed ...
- [区块链|非对称加密] 对数字证书(CA认证)原理的回顾
摘要:文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的 ...
- C#爬虫使用代理刷csdn文章浏览量
昨天写了一篇关于“c#批量抓取免费代理并验证有效性”的文章,接着昨天的目标继续完成吧,最终实现的目的就是刷新csdn文章的浏览量(实际上很简单,之前博客园的文章也是可以使用代理ip来刷的,后来不行了) ...
- 给WEB初学者一些有效率的建议
因为IT互联网发展的非常迅速,而web前端这块很火,目前工资水平给的很高,在市场上也是非常的稀缺人才,现在各个行业转行做web前端的很多,今天给大家一些建议,希望新手少走点弯路吧! 建议一:有一个比较 ...
- 什么是CSS
CSS是Cascading Style Sheet的缩写.译作”层叠样式表单“.是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言.使用CSS样式可以控制许多仅使用HTML无法控 ...
- [ArcGIS API for JavaScript 4.8] Sample Code-Get Started-MapView,SceneView简介
[官方文档:https://developers.arcgis.com/javascript/latest/sample-code/index.html] 一.Intro to MapView(2D ...
- July 10th, 2018. Tuesday, Week 28th
Winning isn't everything, but wanting it is. 胜利并不能代表一切,但求胜心可以. From Arnold Palmer. Compared to this ...
- 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
第38章 TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...