【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 ...
随机推荐
- 将wiki人脸数据集的性别信息提取出来制作标签
import scipy.io as scio dataFile = 'D:\\Users\\a\\Documents\\Tencent Files\\178026882\\FileRecv\\wik ...
- Random在高并发下的缺陷以及JUC对其的优化
Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了.但并不是每个人都知道Ra ...
- surging如何使用swagger 组件测试业务模块
1.前言 微服务架构概念的提出已经有非常长一段时间了,但在近期几年却开始频繁地出现,大家都着手升级成微服务架构,使用着各种技术,大家认为框架有服务治理就是微服务,实现单一协议的服务调用,微服务虽然没有 ...
- Vue之生命周期函数和钩子函数详解
在学习vue几天后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对对vue的生命周期不甚了解.只知道简单的使用,而不知道为什么,这对后面的踩坑是相当不利的.因为我们有时候会在几个钩子函 ...
- [区块链|非对称加密] 对数字证书(CA认证)原理的回顾
摘要:文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的 ...
- 一文了解 Hadoop 运行机制
大数据技术栈在当下已经是比较成熟的了,Hadoop 作为大数据存储的基石,其重要程度不言而喻,作为一个想从 java 后端转向大数据开发的程序员来说,打好 Hadoop 基础,就相当于夯实建造房屋的地 ...
- JS异步操作新体验之 async函数
1.初识 async 函数 ES6中提供了两个很好的解决异步操作的方案 Promise 和 Generator,ES2017标准中引入的 async 函数就是建立在 Promise 和 Gener ...
- SQL Server内幕之数据页
数据页是包含已添加到数据库表中的用户数据的结构. 如前所述, 数据页有三种, 每个都以不同的格式存储数据. SQL server 有行内数据页.行溢出数据页和 LOB 数据页. 与 SQL serve ...
- Promise(避免金字塔回调)
前后端分离开发,前端通过接口获取数据,但是有的页面不止一个接口,就会出现金字塔回调,可以通过 Promise 封装请求. request-data.js: function reqData(postu ...
- Git:一、简介&安装Git 2.20.1
0.Git官网 1.简介 一个分布式版本控制系统. 作用:自动记录每次文件的改动,还可以让同伴协作编辑. 分布式与集中式相比优点在于:版本库在每个人自己电脑上,不需要一直在网上,也不用担心某一个数据库 ...