如果属性名称不等于字段名称,Jackson @JsonProperty 不起作用

2024-03-10

我有以下 JSON

{
  "known-name": "Zevs",
  "approximate-age": 320
}

和绑定类

public class GodBinding {

  @JsonProperty("known-name")
  public String name;

  @JsonProperty("approximate-age")
  public int age;

  // constructors
  // getters & setters
}

以及以下 Maven 依赖项 2.23.2 2.5.4

 <dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
    </dependency>
 </dependencies>

如果我发布这样的 json,那么我会得到意外的 null 结果。

GodBinding [name=null, age=0]

如果我使用不带名称的 @JsonProperty 并发送 JSON,其中属性名称等于字段名称

{
  "name": "Zevs",
  "age": 320
}

然后就可以正常工作了

GodBinding [name=Zevs, age=320]

如果有人知道,如何使字段上的 @JsonProperty("name") 正常工作?


当 Jackson 的注释是 Jackson 1 的,但您想使用 Jackson 2 时,通常会导致这种情况,正如许多其他问题中提到的那样。

就我而言,在项目中我有另一个错误导入的依赖项:

import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;

当我创建ObjectMapper。我猜testcontainers使用自己的ObjectMapper作为其依赖项并错误地暴露它;实际上它是一个旧版本。不确定哪个是。

我把它改为

import com.fasterxml.jackson.databind.ObjectMapper;

现在一切正常。这就是我所说的“一级依赖”,而不是“依赖的依赖”。在我的 gradle 文件中它是版本 2.3。

我提到这一点是因为:

  • 我看到其他问题只提到杰克逊 1 和 2 之间的混淆,而不是这个testcontainer。我们必须忽略那些不属于fasterxml.jackson.

  • 不仅要注意版本@JsonProperty, etc, 还有您导入时使用的 Jackson 版本ObjectMapper and DeserializationFeature.

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

如果属性名称不等于字段名称,Jackson @JsonProperty 不起作用 的相关文章

  • 使用 jquery 迭代 json 数组

    已经有一些帖子和我遇到了类似的问题 如何使用 PHP 中的 jQuery AJAX 调用迭代 JSON 数组 https stackoverflow com questions 6472338 how do i iterate over a
  • 使用 jdbc 程序连接到 Open Office odb 文件

    我编写了以下代码来连接到 OpenOffice db String db C Documents and Settings hkonakanchi Desktop Test odb Class forName org hsqldb jdbc
  • 如何在Spring的applicationContext.xml中指定默认范围来请求范围?

    我想让所有 bean 请求默认作用域 但是 Spring 文档说默认作用域是 Singleton 第 3 4 1 和 3 4 2 节http static springsource org spring docs 2 5 x referen
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • 我想使用 Sequelize 将 MySQL 中的对象数组存储在单个列中

    之前我正在寻找如何使用 Sequelize 在 MySQL 中插入对象数组 然后我找到了一种直接插入数组的解决方案 例如 1 2 在单列中 insert into TABLE NAME id marks VALUES 21 1 2 但我正在
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • getClassLoader().getResource() 返回 null

    我有这个测试应用程序 import java applet import java awt import java net URL public class Test extends Applet public void init URL
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • Java String.format 向整数添加空格

    我有一小段代码 我不明白输出 此输出向我的字符串格式文本添加空格 我做错了什么吗 public class HelloWorld public static void main String args int a1 540 int a2 4
  • java 属性文件作为枚举

    是否可以将属性文件转换为枚举 我有一个包含很多设置的属性文件 例如 equipment height equipment widht equipment depth and many more like this and not all a
  • 通用 JSF 实体转换器[重复]

    这个问题在这里已经有答案了 我正在编写我的第一个 Java EE 6 Web 应用程序作为学习练习 我没有使用框架 只是使用 JPA 2 0 EJB 3 1 和 JSF 2 0 我有一个自定义转换器 用于将存储在 SelectOne 组件中
  • 当容器大小更改时,JTable 仅调整选定列的大小

    对于面板内的 JTable 如果面板变大 我如何将额外的空间仅分配给某些列 在我的例子中 分配给最后一列 尽管提供 第 3 4 列和8 将获得额外的空间 我想允许用户手动更改所有列的列大小 我尝试了 table setAutoResizeM
  • 为什么在尝试使用 Java 连接到 RDS PostgreSQL 数据库时会收到 SocketTimeoutException?

    我有一个 Spring 应用程序 我试图在 AWS 上托管 几天来我一直在努力配置 我有一个 EC2 实例 并且能够通过 SSH 连接到它 我还在 AWS 中设置了 Postgres RDS 数据库 但我无法使用 IDE 中的代码连接到它
  • 使用 Maven 3 时 Cobertura 代码覆盖率为 0%

    读完这篇文章后 将 Cobertura 与 Maven 3 0 2 一起使用的正确方法是什么 https stackoverflow com questions 6931360 what is the proper way to use c
  • 将字符串中的字符向左移动

    我是 Stack Overflow 的新手 有一道编程课的实验室问题一直困扰着我 该问题要求我们将字符串 s 的元素向左移动 k 次 例如 如果输入是 Hello World 和3 它将输出 lo WorldHel 对于非常大的 k 值 它
  • Scala repl 抛出错误

    当我打字时scala在终端上启动 repl 它会抛出此错误 scala gt init error error while loading AnnotatedElement class file usr lib jvm java 8 ora
  • Java的hashCode可以为不同的字符串产生相同的值吗?

    使用java的哈希码函数是否可以为不同的字符串提供相同的哈希码 或者如果可能的话 其可能性的 是多少 Java 哈希码是 32 位 它散列的可能字符串的数量是无限的 所以是的 会发生冲突 百分比是没有意义的 项目 字符串 的数量是无限的 而
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和
  • 如何在Java中跨类共享变量,我尝试了静态不起作用

    类 Testclass1 有一个变量 有一些执行会改变变量的值 现在在同一个包中有类 Testclass2 我将如何访问 Testclass2 中变量的更新值 由 Testclass1 更新 试过这个没用 注意 Testclass1和Tes

随机推荐

  • 在 C# 中使用 Marshal.StructureToPtr 将结构传递给 C++ API

    我在我的代码中使用用 C 编写的 API 用 C 编写 API 需要一个参数作为结构指针 该结构由 Int 和 Char 数组组成 例如 unsafe public struct ToBePassed Int32 Num1 Int32 Nu
  • 如何使用Python ping ip并仅获取Tk中的ms?

    我想制作一个小 tk 应用程序 连续 ping 一个 ip 并且只显示 MS 例如 10ms 我该怎么办 如果您想使用 Windowsping 您必须解析命令行的输出 这是非常具体的 但应该有效 import os while 1 ping
  • 转换 Java 函数式接口

    一如既往 我浏览 JDK 8 源代码并发现了非常有趣的代码 Override default void forEachRemaining Consumer
  • 手动创建 Git 分支

    如果我理解分叉 它在概念上涉及以下步骤 将源存储库镜像克隆到目标存储库 在目标存储库上设置 上游 远程 指向源存储库 其他一些东西 例如电子邮件订阅等 对于这个问题并不重要 它是这样的 Original lt upstream Forked
  • 使用 Elasticsearch 搜索 Mysql 表

    假设我有以下 费用 MySQL 表 id amount vendor tag 1 100 google foo 2 450 GitHub bar 3 22 GitLab fizz 4 75 AWS buzz 我正在构建一个 API 该 AP
  • 当我使用 is 运算符时,为什么 IL 代码中只有空检查?

    我想知道怎么样is operator实施于C 我写了一个简单的测试程序 没什么特别的 只是为了演示目的 class Base public void Display Console WriteLine Base class Derived
  • 在函数内部使用 php 命名空间

    尝试在我自己的函数中使用名称空间时出现解析错误 require var load php function go use test Class go ok return go echo go From 导入范围规则 http php net
  • Delphi 中 WideString 的 WrapText

    德尔福有一个WrapText http docwiki embarcadero com VCL en SysUtils WrapText功能 function WrapText const Line BreakStr string cons
  • 在“SELECT”标签中呈现“OPTION”的层次结构

    我的问题与 HTML 和 CSS 相关 我有一个层次结构类型的结构 我想在列表中显示 该层次结构包含国家 州和城市 共三层 我想在选择列表中显示列表 每个项目类型 国家 州 城市 必须可选 这些项目应缩进为 United States Ha
  • Chrome 中有时会跳过 CSS 过渡

    我想将鼠标悬停在图像上时使用旋转动画翻转图像 请参阅下面的代码 当鼠标悬停在图像上时 它会绕 x 轴旋转一秒钟 当鼠标离开图像时返回 动画在 Firefox 和 Safari 中按预期工作 然而 Chrome有时会跳过动画并立即翻转图像 我
  • 使用 pandas dataframes data python 创建堆叠直方图

    我正在尝试使用来自 2 个或更多不均匀的 pandas 数据帧的数据创建堆叠直方图 到目前为止 我可以让它们在彼此之上绘制图表 但不能堆叠 import pandas as pd import matplotlib pyplot as pl
  • 我什么时候应该在 Python 中使用类型检查(如果有的话)?

    我开始学习 Python 作为一名主要的 Java 开发人员 我遇到的最大问题是了解何时以及何时不使用类型检查 大多数人似乎都说 Python 代码不需要类型检查 但在很多情况下我认为这是必要的 例如 假设我需要使用方法参数来执行算术运算
  • jQuery 模态表单对话框回发问题

    我创建了一个jQuery用户界面 http en wikipedia org wiki JQuery UI模式形式 我希望该形式触发回发 但我很难让它工作 我知道有很多文章是基于使用 SimpleModal 插件的 我尝试过调整这些并覆盖
  • 在python中获取组合框的值

    我正在开发一个简单的程序 我需要从Combobox 当Combobox位于第一个创建的窗口中 但例如如果我有两个窗口并且Combobox在第二个中 我无法从中读取值 例如 from tkinter import from tkinter i
  • 带 Sinch VOIP 的 Pushkit 无法与 Pushkit 配合使用

    我正在尝试在我的 IOS 应用程序中使用 Sinch 实现应用程序到应用程序的呼叫 我已经使用 Sinch 在我的 iOS 应用程序中实现了 Pushkit 但是当应用程序处于后台时 推送通知不起作用 我有两个问题 我是否需要另一个 Web
  • 实现Map并保持插入顺序的Java类?

    我正在java中寻找一个具有键值关联但不使用哈希的类 这是我目前正在做的事情 将值添加到Hashtable 获取一个迭代器Hashtable entrySet Iterate through all values and Get a Map
  • 在python中检测文本中的缩写

    我想在文本中找到缩写并将其删除 我目前正在做的是识别连续的大写字母并将其删除 但我发现它并没有删除缩写 例如MOOCs M O O C M O O Cs 在 python 中是否有一种简单的方法可以做到这一点 或者有什么库可以代替吗 The
  • AWS CDK 用户池授权者

    我正在尝试使用 AWS CDK 创建 API 网关 并使用 Cognito 用户池授权者保护 REST 端点 我找不到任何如何做到这一点的例子 我认为它应该看起来像这样 但也许我需要的方法不存在 const cdk require aws
  • 通过 python selenium 在 Chrome 中限制 CPU

    是否可以通过 python selenium 在 chrome 的 devtools 中限制 CPU 如果是这样 怎么办 看来司机有一个方法execute cdp cmd它代表 执行 Chrome Devtools 协议命令 但我不知道我会
  • 如果属性名称不等于字段名称,Jackson @JsonProperty 不起作用

    我有以下 JSON known name Zevs approximate age 320 和绑定类 public class GodBinding JsonProperty known name public String name Js