转json_Java对象转JSON时如何动态的增删改查属性
1. 前言
日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。
2. JSON 字符串增加额外字段
假如我们有这样结构的 JSON:
{ "username":"felord.cn", "age":18}
期望增加一个性别字段gender
:
{ "username": "felord.cn", "age": 18, "gender": "male"}
首先使用ObjectMapper
加载 JSON 字符串,为ObjectNode
:
ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
ObjectNode
提供了很多操作 JSON 属性的方法:
- get 根据索引或者字段名获取对应的
JsonNode
。 - put 系列方法 提供了将基本类型、
null
值、对象、数组、原始值添加到 JSON 的能力。
正好我们可以借助于put
方法来完成额外新增字段,完整的代码片段:
String json = "{\n" + " \"username\":\"felord.cn\",\n" + " \"age\":18\n" + "}";
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);jsonNodes.put("gender", "male");String newJson = objectMapper.writeValueAsString(jsonNodes);// newJson = {"username":"felord.cn","age":18,"gender":"male"}
3. 对象转 JSON 时新增字段
有时候我们定义的对象没有包含特定的字段,但是转成 JSON 时同样需要有额外的字段。跟章节 2类似,,只不过提供的不再是 JSON 字符串而是 Java 对象:
/** * @author felord.cn * @since 11:02 */@Datapublic class User { private String username; private Integer age;}
其实思路很明确,只要我们能够将对象转换为ObjectNode
就可以如法炮制。ObjectMapper
提供了valueToTree
方法可以实现这一点,所以对象转 JSON 时新增字段完整的 DEMO 为:
User user = new User();user.setUsername("felord.cn");user.setAge(18);
ObjectMapper objectMapper = new ObjectMapper();ObjectNode jsonNodes = objectMapper.valueToTree(user);jsonNodes.put("gender", "male");String newJson = objectMapper.writeValueAsString(jsonNodes);// newJson = {"username":"felord.cn","age":18,"gender":"male"}
4. 移除属性
无论是 JSON 字符串或者 Java 对象转 JSON 时,移除属性跟上面的思路一样,只需要调用remove
方法即可,这里不再演示。
5. 扩展
上面的所有操作都是借助于了Jackson中的JsonNode
派生的 JSON 节点类完成的,关系如下:
JsonNode
可以细粒度的访问 JSON 信息,提供了非常有用的 JSON 对象操作 API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些 API,只需要记住它可以操作 JSON 即可。
6. 总结
本文对 Jackson 动态的增删改查 JSON 进行了介绍,牵引出一个很重要的操作工具JsonNode
。充分利用手中已有的资源来解决问题,无需自己造轮子,也不必引入新的依赖。好了今天的分享就到这里,多多关注:码农小胖哥 及时获取更多编程干货。
Java中的微信支付(2):API V3 微信平台证书的获取与刷新
2020-10-27
Java中的微信支付(1):API V3版本签名详解
2020-10-24
XML和JSON互相转换原来这么简单
2020-10-22
转json_Java对象转JSON时如何动态的增删改查属性相关推荐
- Java对象转JSON时如何动态的增删改查属性
1. 前言 日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON 字符串增加额外字段 假如我 ...
- mybatis动态SQL增删改查
我们在对数据库进行增删改查的时候,很多时候我们并不确定我们要进行传入的参数的个数,种类以及是否为空. 此时我们就需要用到mybatis动态sql来对数据库进行灵活的交互. 步骤一:导入相关jar包,编 ...
- statement的增删改查和动态的增删改查
一 statement的crud: mybatis约定: 输入参数parameterType和输出参数resultType,在形式上都只能有一个 如果输入参数:是简单类型(8个基本类型+String) ...
- 动态链表增删改查及排序功能
主要功能的实现: #include "SeqList.h" void InitSeqList(SeqList * pSeq)//初始化 {assert(pSeq);pSeq-> ...
- 响应对象转json时属性名大小写问题完美解决
首先:案例是model里的属性名大写,http response时json默认变成小写开头,和model属性不一致. 例子: model为: class User{private String NAM ...
- javascript json对象操作(基本增删改查)
/*** Json对象操作,增删改查** @author lellansin* @blog www.lellansin.com* @version 0.1* * 解决一些常见的问题* get/set ...
- 用ajax+jquery+json+css3+html5实现登录、注册、以及主页面的增删改查
主要思路 在登录界面,输入用户名和密码,失焦的时候,判断输入的用户名和密码是否符合相应的正则表达式的要求.如果符合,就发送ajax请求到服务端,服务端接受到请求,就把从页面中传来的数据和json文件里 ...
- 创建一个简单的后台教务管理系统,包含动态增删改查学生,年级和课程信息及查看登录日志等功能,包含表单验证.
创建一个简单的后台教务管理系统,包含动态增删改查学生,年级和课程信息及查看登录日志等功能,包含表单验证. 一.显示页面 新建一个登录页面,即login.jsp <%--Created by In ...
- 动态网站作业4-JSP中实现数据库的增删改查的操作
动态网站作业4-JSP中实现数据库的增删改查的操作 用Statement向数据库中添加元素 1.创建JavaBean–UserBean package com.media.bean;public cl ...
最新文章
- Symbian 编程总结导读
- python中二维数组的建立,输入和输出
- 为什么B+树比B树更适合做数据库索引
- linux编译ffmpeg_[Cmake-Android音视频]ffmpeg3.4编译支持neon,硬解码
- Linux 多线程可重入函数
- redis的压缩列表源码ziplist解析
- json解析和字符串解析_高效创建和解析定界字符串
- 简单的excel上传解析和错误反馈信息下载
- Tp nginx.conf 配置(Linux)
- 第四章 INI配置——《跟我学Shiro》[张开涛]
- 百度Apollo 2.0 车辆控制算法之LQR控制算法解读-清晰版
- C# 根据EXCEL自动生成oracle建表语句
- 将 MySQL 数据库恢复到某个时间点
- stc单片机id加密c语言,STC单片机使用加密芯片SMEC98SP的加密实例源码
- python详细教程#2下载python
- 微软的产品激活中心电话
- monkey命令——压力测试——个人总结
- 秒杀排列组合(上)————排列篇
- 【BeetSQL入门学习】
- 笔记本电脑无法调整亮度
热门文章
- SAP Commerce Impex语法
- 使用SAP Analytics Cloud显示全球新冠肺炎确诊人数和发展趋势的预测
- 使用代码获得Social Media Channel绑定的service url
- 还在安装各种截图软件?Windows10自带的截图工具你会用吗?
- Fiori UI上创建的note和web client UI上note的对应关系
- SAP Pricing的access sequence是如何在循环被处理的
- Fiori应用的花瓣动画效果是怎么画出来的
- Fiori应用里如何给客户主数据维护图片
- 如何查看监听某个端口的进程明细
- 在IE环境下用javascript触发ABAP event