【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 ...
随机推荐
- zipkin+kafka+elasticsearch
1.安装zookeeper(3.4.6) 安装过程(略) 启动zookeeper ./bin/zkServer.sh start 或者bin/zookeeper-server-start.sh con ...
- webpack Code Splitting浅析
Code Splitting是webpack的一个重要特性,他允许你将代码打包生成多个bundle.对多页应用来说,它是必须的,因为必须要配置多个入口生成多个bundle:对于单页应用来说,如果只打包 ...
- 从壹开始前后端 [vue后台] 之二 || 完美实现 JWT 滑动授权刷新
缘起 哈喽大家周一好!不知道小伙伴们有没有学习呀,近来发现各种俱乐部搞起来了,啥时候群里小伙伴也搞一次分享会吧,好歹也是半千了(时间真快,还记得5个月前只有20多人),之前在上个公司,虽然也参与组织过 ...
- Jedis异常解决:NOAUTH Authentication required
引言 之前项目能够正常运行,因为默认选择db0,后来新的需求来了,不是默认db0,而是给参数选择db. 修改后代码如下,却报错NOAUTH Authentication required. 解决方法 ...
- 游戏AI之决策结构—有限状态机/行为树(2)
目录 有限状态机 行为树 控制节点 条件节点 行为节点 装饰节点 总结 额外/细节/优化 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行 ...
- spark集群搭建整理之解决亿级人群标签问题
最近在做一个人群标签的项目,也就是根据客户的一些交易行为自动给客户打标签,而这些标签更有利于我们做商品推荐,目前打上标签的数据已达5亿+, 用户量大概1亿+,项目需求就是根据各种组合条件寻找标签和人群 ...
- PowerDesigner制作UMI图
首先我们要下载一个PowerDesigner,自己上百度下载哈!嘻嘻!!! 我这个是汉化版的 然后点这个,再到空白的地方点一下就创建好了. 然后单击右边箭头然后双击 不管是制作的图还是代码生成的图都可 ...
- SqlServer 递归查询
--查询部门及下属部门列表 WITH TEMP --递归 AS (SELECT Id, Code, Name, ParentId FROM [dbo].[AspSysDepartments] --查询 ...
- Linux stat函数和stat命令
stat函数和stat命令 linux文件里的[inode = index node]解释:要理解inode必须了解磁盘和[目录项],inode实际是连接[目录项]和磁盘的中间物质. 图里的大圈代表硬 ...
- NSTimer循环引用的几种解决方案
前言 在iOS中,NSTimer的使用是非常频繁的,但是NSTimer在使用中需要注意,避免循环引用的问题.之前经常这样写: - (void)setupTimer { self.timer = [NS ...