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

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时如何动态的增删改查属性相关推荐

  1. Java对象转JSON时如何动态的增删改查属性

    1. 前言 日常开发中少不了 JSON 处理,少不了需要在 JSON 中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON 字符串增加额外字段 假如我 ...

  2. mybatis动态SQL增删改查

    我们在对数据库进行增删改查的时候,很多时候我们并不确定我们要进行传入的参数的个数,种类以及是否为空. 此时我们就需要用到mybatis动态sql来对数据库进行灵活的交互. 步骤一:导入相关jar包,编 ...

  3. statement的增删改查和动态的增删改查

    一 statement的crud: mybatis约定: 输入参数parameterType和输出参数resultType,在形式上都只能有一个 如果输入参数:是简单类型(8个基本类型+String) ...

  4. 动态链表增删改查及排序功能

    主要功能的实现: #include "SeqList.h" void InitSeqList(SeqList * pSeq)//初始化 {assert(pSeq);pSeq-> ...

  5. 响应对象转json时属性名大小写问题完美解决

    首先:案例是model里的属性名大写,http response时json默认变成小写开头,和model属性不一致. 例子: model为: class User{private String NAM ...

  6. javascript json对象操作(基本增删改查)

    /*** Json对象操作,增删改查** @author lellansin* @blog www.lellansin.com* @version 0.1* * 解决一些常见的问题* get/set ...

  7. 用ajax+jquery+json+css3+html5实现登录、注册、以及主页面的增删改查

    主要思路 在登录界面,输入用户名和密码,失焦的时候,判断输入的用户名和密码是否符合相应的正则表达式的要求.如果符合,就发送ajax请求到服务端,服务端接受到请求,就把从页面中传来的数据和json文件里 ...

  8. 创建一个简单的后台教务管理系统,包含动态增删改查学生,年级和课程信息及查看登录日志等功能,包含表单验证.

    创建一个简单的后台教务管理系统,包含动态增删改查学生,年级和课程信息及查看登录日志等功能,包含表单验证. 一.显示页面 新建一个登录页面,即login.jsp <%--Created by In ...

  9. 动态网站作业4-JSP中实现数据库的增删改查的操作

    动态网站作业4-JSP中实现数据库的增删改查的操作 用Statement向数据库中添加元素 1.创建JavaBean–UserBean package com.media.bean;public cl ...

最新文章

  1. Symbian 编程总结导读
  2. python中二维数组的建立,输入和输出
  3. 为什么B+树比B树更适合做数据库索引
  4. linux编译ffmpeg_[Cmake-Android音视频]ffmpeg3.4编译支持neon,硬解码
  5. Linux 多线程可重入函数
  6. redis的压缩列表源码ziplist解析
  7. json解析和字符串解析_高效创建和解析定界字符串
  8. 简单的excel上传解析和错误反馈信息下载
  9. Tp nginx.conf 配置(Linux)
  10. 第四章 INI配置——《跟我学Shiro》[张开涛]
  11. 百度Apollo 2.0 车辆控制算法之LQR控制算法解读-清晰版
  12. C# 根据EXCEL自动生成oracle建表语句
  13. 将 MySQL 数据库恢复到某个时间点
  14. stc单片机id加密c语言,STC单片机使用加密芯片SMEC98SP的加密实例源码
  15. python详细教程#2下载python
  16. 微软的产品激活中心电话
  17. monkey命令——压力测试——个人总结
  18. 秒杀排列组合(上)————排列篇
  19. 【BeetSQL入门学习】
  20. 笔记本电脑无法调整亮度

热门文章

  1. SAP Commerce Impex语法
  2. 使用SAP Analytics Cloud显示全球新冠肺炎确诊人数和发展趋势的预测
  3. 使用代码获得Social Media Channel绑定的service url
  4. 还在安装各种截图软件?Windows10自带的截图工具你会用吗?
  5. Fiori UI上创建的note和web client UI上note的对应关系
  6. SAP Pricing的access sequence是如何在循环被处理的
  7. Fiori应用的花瓣动画效果是怎么画出来的
  8. Fiori应用里如何给客户主数据维护图片
  9. 如何查看监听某个端口的进程明细
  10. 在IE环境下用javascript触发ABAP event