使用 Jackson java 库动态更改 JsonProperty 名称

2023-12-09

I use Jackson 2.9.8用于转换我的下面POJO as JSON:

public class ResponseEntity implements Serializable {

    private static final long serialVersionUID = 1L;
    private int total_record_count;
    private int filtered_record_count;
    @JsonProperty("list")
    private List<Map<String,Object>> entityList;

    public ResponseEntity(List<Map<String,Object>> entityList)  {
        this.entityList = entityList;
        this.filtered_record_count = entityList.size();
    }

    public int getTotal_record_count() {
        return total_record_count;
    }
    public void setTotal_record_count(int total_record_count) {
        this.total_record_count = total_record_count;
    }
    public int getFiltered_record_count() {
        return filtered_record_count;
    }
    public void setFiltered_record_count(int filtered_record_count) {
        this.filtered_record_count = filtered_record_count;
    }
    public List<Map<String, Object>> getEntityList() {
        return entityList;
    }
    public void setEntityList(List<Map<String, Object>> entityList) {
        this.entityList = entityList;
    }
}

结果中JSON, 的价值实体列表成员映射到list键,如其注释所示@JsonProperty("list"):

{
   "list" : [ {
     "id" : "IID000000002129959",
     "attr1" : "MY",
     "attr2" : "sd",
     "attr3" : true   }]
}

但我需要用不同的名称来定制它。对于某些响应应该是busines1, business2, etc.

我该如何制作JsonProperty名字动态?


您可以在构造函数中提供名称并使用JsonAnyGetter。以下解决方案:

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public class JsonApp {

    public static void main(String[] args) throws Exception {
        ResponseEntity entity = new ResponseEntity("dynList",
                Collections.singletonList(Collections.singletonMap("key", "value1")));

        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);

        System.out.println(mapper.writeValueAsString(entity));
    }
}

class ResponseEntity implements Serializable {

    private static final long serialVersionUID = 1L;
    private int total_record_count;
    private int filtered_record_count;

    private String propertyName;

    @JsonIgnore
    private List<Map<String, Object>> entityList;

    public ResponseEntity(String propertyName, List<Map<String, Object>> entityList) {
        this.propertyName = propertyName;
        this.entityList = entityList;
        this.filtered_record_count = entityList.size();
    }

    @JsonAnyGetter
    public Map<String, Object> otherProperties() {
        return Collections.singletonMap(propertyName, entityList);
    }

    // other methods
}

prints:

{
  "total_record_count" : 0,
  "filtered_record_count" : 1,
  "dynList" : [ {
    "key" : "value1"
  } ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Jackson java 库动态更改 JsonProperty 名称 的相关文章

  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • 启动Java项目时发生类冲突:ClassMetadataReadingVisitor将接口org.springframework.asm.ClassVisitor作为超类

    我正在使用最新的Spring框架版本 3 2 2 RELEASE 开发一个Java Web项目 但是现在项目启动时遇到了问题 详细错误是 java lang IncompleteClassChangeError 类 org springfr

随机推荐

  • 试图掌握继承时遇到麻烦

    给定 Main java public class Main public static void main String args A a new B a print class A A print void print System o
  • 在Python中的方法之间传递变量?

    我有一个类和两个方法 一种方法从用户获取输入并将其存储在两个变量中 x and y 我想要另一种接受输入的方法 因此将该输入添加到x and y 就像这样 class simpleclass object def getinput self
  • Matplotlib:自动修改轴标签

    我知道可以通过手动设置来更改轴标签 例如 修改刻度标签文本 然而 这显然只有在你知道你想要什么标签的情况下才有效 但对我来说情况并非如此 这是我想要完成的示例 我有两个 numpy 数组 x包含 1 到 366 之间的数字 但不一定是全部
  • 我需要在表格形式之间添加一个虚拟行,以使其在用户端更具吸引力

    表格形式是在带有 SQL 查询 可更新报告 的经典报告上创建的 它还具有向导生成的 MRU 和 MRD 流程 区域源具有以下代码 写在下面 它可以正常工作并显示如下所示的列 select ROWID EVAL SR NO SELECT SK
  • 为什么“RedisTemplate”可以转换为“ListOperations”

    我正在阅读 spring data redis 参考指南 在 5 5 章中 我们创建了redisTemplatespring config xml 文件中的bean
  • Mysql 查询删除重复的 WordPress 评论?

    我在使用 Disqus 时遇到了一个问题 它在许多帖子上创建了重复的评论 有时同一条评论有 4 个重复 我一直在尝试手动删除这些评论 但我们总共有超过 10K 条评论 不幸的是 这种情况是偶然发生的 只发生在某些帖子上 所以 有谁知道 my
  • 导入错误:没有名为“google”的模块

    我安装了Python 3 5 我跑了pip install google命令并验证模块 谷歌也在场 我安装了Anaconda3 5并尝试运行z示例代码 但我收到导入错误 请查找随附的屏幕截图 我缺少什么 我是否必须以某种方式将我的 Spyd
  • 如何使用 setOnPreferenceChangeListener 进行 QuietlyCoding NumberPicker?

    我想检测何时来自NumberPicker被改变了 我的电脑上有这个代码PreferenceActivity public class MainPrefs extends PreferenceActivity Override protect
  • 查找字符串数组在字符串中第一次出现的位置

    PHP有一个函数strpos 用于查找字符串中给定值的第一个实例的位置 有没有办法用字符串数组的针来做到这一点 它会给出第一次出现 str 1st and 3rd str array pos str array st nd rd th wo
  • Asp.NET 缓存

    我已经在文件 XML 上实现了缓存 该文件被发送到图形控件以呈现它 然而 我被告知要以一种可以轻松打开和关闭的方式实现缓存 意味着在 web config 中设置一个值 有没有办法根据 web config 文件中的值打开和关闭缓存 非常感
  • 如何通过点击而不是语音来触发 Alexa 意图?

    我正在开发一个链接到 Alexa 技能的 Flask 应用程序 我正在尝试构建一种功能 当用户单击某些内容 例如通知 时 Alexa 会询问用户是否希望继续 如果用户说 是 那么 Alexa 会将用户带到相关网页 我的问题是 是否可以通过点
  • 错误消息:(提供程序:共享内存提供程序,错误:0 - 管道的另一端没有进程。)

    我正在尝试在 Windows Server 2003 上部署我的网站 我是否遗漏了某些内容 或者以下错误消息有什么问题 我该如何纠正 感谢 我收到错误消息 已成功与服务器建立连接 但登录过程中出现错误 提供程序 共享内存提供程序 错误 0
  • 使用 Objective-C 加密数据并使用 Java 解密数据问题

    我有一个 iPhone 解决方案 它使用 XML 在客户端 移动设备 和服务器 Java 之间传输数据 由于传输的信息类型不同 消息 XML 的某些部分必须加密 我计划使用 AES 128 来加密和解密这两个端点之间的数据 首先使用 Obj
  • 响应式表格中的 Bootstrap 下拉菜单

    我在 Bootstrap 3 中的响应式表格中遇到下拉菜单问题 无论我在 CSS 中放置什么 例如溢出 自动或定位 下拉菜单中的菜单都会出现在响应式 div 中 以便单击任何您必须滚动的链接 div class table responsi
  • 批处理:从文本文件中删除所有空格?

    我有文本文件 201N001466 AD55JGU0604140 VOLKSWAGEN GOLF S BLACK 201N001437 AF14HFY0604140 BMW 520D SE AUTO GREY 我想删除所有空格 并使我的输出
  • 即使使用最简单的 Jasperreport jrxml 也是空白 PDF

    我有一个 EJB 站点 其中包含 glassfish 3 1 JSF for jasperreport 4 0 1 该网站在流式处理 pdf 时没有问题 但在使用 runReportToPdfStream 打印 PDF 时却生成空白 PDF
  • 如何通过python选择json中对象的特定键/值

    我能够获得 api 请求的响应并让它提供所有详细信息 我解码 json response json 并使用 open 和 json dump 创建文件 我可以看到列表中对象的所有键和值 接下来我想获取一个特定的键 值 以便我可以将其用作其他
  • 下标的使用不明确

    我有一个可扩展的表格 其中包含自定义单元格 当点击可见行时 这些单元格会出现或消失 单元格的数据存储在 plist 中并声明为 NSMutableArray 我在以下代码中收到 下标使用不明确 错误 并希望其他人也遇到过此问题并知道解决方法
  • 使用 Core Plot iPhone - 链接器错误

    当我尝试在项目中使用 Core Plot 时 我不断收到以下链接器错误 Undefined symbols for architecture i386 OBJC CLASS CPXYGraph referenced from objc cl
  • 使用 Jackson java 库动态更改 JsonProperty 名称

    I use Jackson 2 9 8用于转换我的下面POJO as JSON public class ResponseEntity implements Serializable private static final long se