Jackson 的 Access.WRITE_ONLY 在测试 null 期间

2024-06-28

我目前正在使用 Jackson 的反/序列化功能,遇到了一个问题,我不知道如何解决。

在我的测试过程中@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)注释被忽略,它只显示null。 然而,例如邮递员一切都按预期进行。

我只使用带有 Web Starter 和 Test Starter 依赖项的 Spring Boot Starter。

示例代码:

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@RestController
class JacksonExampleRestController {

    @PostMapping("/api")
    public void getResti(@RequestBody JacksonModel jacksonModel) {
        System.out.println(jacksonModel.getId());
        System.out.println(jacksonModel.getPassword());
    }
}

class JacksonModel {

    private String id;

    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Test:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class DemoApplicationTests {

    private MockMvc mockMvc;

    @Before
    public void setUp() {

        JacksonExampleRestController jacksonExampleRestController = new JacksonExampleRestController();

        mockMvc = MockMvcBuilders.standaloneSetup(jacksonExampleRestController)
                .build();
    }

    @Test
    public void testJackson() throws Exception {
        JacksonModel jacksonModel = new JacksonModel();
        jacksonModel.setId("id");
        jacksonModel.setPassword("password");

        mockMvc.perform(post("/api").
                contentType(APPLICATION_JSON_UTF8)
                .content(convertObjectToJsonBytes(jacksonModel)));
    }

    public static byte[] convertObjectToJsonBytes(Object object)
            throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        return mapper.writeValueAsBytes(object);
    }
}

这是默认行为吗?我是否必须在测试中配置某些内容,或者是我现在看不到的其他内容?


忽略所有注释可能会出现问题。要处理更精细的配置,您可以实现您的自定义JacksonAnnotationIntrospector:

public class IgnoreJacksonWriteOnlyAccess extends JacksonAnnotationIntrospector {

    @Override
    public JsonProperty.Access findPropertyAccess(Annotated m) {
        JsonProperty.Access access = super.findPropertyAccess(m);
        if (access == JsonProperty.Access.WRITE_ONLY) {
            return JsonProperty.Access.AUTO;
        }
        return access;
    }
}

然后,在实例化映射器之后:

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

Jackson 的 Access.WRITE_ONLY 在测试 null 期间 的相关文章

  • 读取时 R 中的内存错误.xlsx

    我正在使用以下 R 代码 也利用 Java 参数来增加内存 library xlsx options java parameters Xmx1g library XLConnect NiVe lt read xlsx version1 xl
  • 如何在 Spring Data MongoDB 中仅返回查询的特定字段?

    我们如何在 Spring Data Mongo 中选择特定字段 我尝试了以下操作 但我得到了强制转换异常Foo to String Using Query Query value path 0 fields path 0 String fi
  • 从java管理unix进程的最佳方法是什么?

    我正在寻找一些简单的任务 例如列出用户的所有正在运行的进程 或者通过pid等杀死特定进程 来自Java的基本unix进程管理 有没有相对成熟且有文档的库 我可以从 JVM 运行外部命令 然后解析标准输出 错误 但这似乎需要大量工作 而且一点
  • 在“Java Web 服务教程”之后找不到 taskdef 类 com.sun.tools.ws.ant.WsImport

    我在许多不同的地方看到了同样的问题 即使经过大量谷歌搜索 我也无法解决它 我想做的 更大的图景 是经历Java Web 服务教程 http download oracle com docs cd E17802 01 webservices
  • Spring Boot:将系统属性传递给 Maven

    I tried mvn Dspring profiles active dev spring boot run 但这并不影响我的默认配置 我用谷歌搜索了一下 发现 mvn DargLine Dspring profiles active d
  • 信用卡号应该存储为字符串还是整数?

    是啊 只是想想而已 我应该将在我的网站上输入的信用卡号存储为字符串还是整数 我的意思是 它们由数字组成 这让我认为它是一个整数 但我不对它们进行数学运算 所以也许字符串更合适 编辑 所以我必须在加密之前存储在某个时刻输入的数字 我可能应该更
  • 用 Maven 解决 jar 地狱问题?

    我正在使用两个 jars A 和 B B 是一个库 A 的类使用库 B 中的一些旧类 现在 当我将这两个 jars 包含在我的项目类路径中时 这给我带来了一个问题 因为它们的名称相同两个班级 但其中一个班级比另一个班级年长 并且行为方式不同
  • Java错误:线程“main”中出现异常java.lang.ArrayIndexOutOfBoundsException

    我是 Java 初学者 正在学习该课程算法 由普林斯顿大学提供 我按照书上的例子 二分查找在第 9 页 import edu princeton cs algs4 import java util Arrays public class B
  • MyBatis 遵循 JPA 吗?

    作为我的第一个 ORM 我已经使用 myBatis 几个月了 现在我正在尝试学习其他东西 例如 Hibernate JPA 起初很难理解 Hibernate 和 JPA 之间的区别 经过几分钟的研究 我明白 JPA 只是一个规范 Hiber
  • 由于缺少 EmbeddedServletContainerFactory bean,无法启动 Spring Boot 服务器

    我正在尝试使用 gradle 编写一个非常简单的 groovy spring Web 应用程序来处理依赖项 问题是我无法启动应用程序 而且根本不明白为什么 以下是我在ReleaseApp groovy中的主要方法 package com u
  • 升级到 Gradle 2.0 后:在根项目上找不到属性“Compile”

    为了避免在构建 Java 源代码时出现有关特殊字符的警告 我将此行放在我的gradle build在升级到 Gradle 2 0 之前运行良好 tasks withType Compile options encoding UTF 8 升级
  • java.util.Currency.getInstance 抛出 IllegalArgumentException

    我只是想尝试一下java util Currency 但对于少数货币代码来说它让我困惑java lang IllegalArgumentException 这是我的简单代码 java util Currency c java util Cu
  • 是否有更现代的面向对象版本的“让我们构建一个编译器”? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有更现代的 也许是面向对象的 相当于 Jack Crenshaw 的 让我们构建一个编译器 http
  • java中接口上的抽象方法是什么[重复]

    这个问题在这里已经有答案了 可能的重复 为什么要将 Java 接口方法声明为抽象方法 https stackoverflow com questions 641536 why would one declare a java interfa
  • 将 person.city.name 添加到 TableView

    我有一个 TableView 和一些 POJO 并且想要将其中一个属性绑定到 TableView 然而 该属性也是一个 POJO 并且应该有一个属性显示在 TableView 中 这是我的代码
  • Guava Splitter/Joiners 每次使用时都应该创建吗?

    Guava 包含用于拆分和连接字符串的实用程序 但它需要实例化 Splitter Joiner 对象才能执行此操作 这些是小对象 通常仅包含要分割 合并的字符 维护对这些对象的引用以便重用它们是一个好主意 还是在需要它们时创建它们并让它们被
  • 如何在JavaFX中获得狭窄的进度条?

    正如标题所说 我需要制作一个细进度条 我用过这个 progressBar setMaxHeight 0 1 progressBar setPrefHeight 0 1 但这行不通 有人有想法吗 你必须搞乱样式才能让它变小 我真的建议看看ca
  • 在 OpenCV 中将 `BufferedImage` 转换为 `Mat`

    我怎样才能转换BufferedImage to a Mat in OpenCV 我正在使用 JAVA 包装器OpenCV not JavaCV 由于我是新手OpenCV我在理解如何做时遇到一些问题Mat works 我想做这样的事情 基于
  • 使用 Appengine 进行多线程处理

    既然Appengine不允许java多线程 那么我们如何将现有的多线程代码迁移到该平台呢 例如我有以下代码 Thread t new Thread public boolean alive true public void run whil
  • 如何用java实现FTP?

    我正在使用 FTP 我必须在客户端将消息嵌入到图像文件中 并且我必须将其发送到服务器 在服务器端我必须检索图像文件并然后我将检索该消息 我已经完成了嵌入消息并使用密码学和隐写术技术检索消息 我正在寻找如何将该文件从客户端传输到服务器 我必须

随机推荐

  • PHP 警告:除以零

    我正在学习 php 并构建了一个实验性的基于表单的计算器 也使用 html 和 POST 方法 该计算器将值返回到表 当我输入值并单击提交时 计算器可以正常工作 但当我第一次运行代码时 我在最后一行不断收到两个 除以零 错误 在这里或通过谷
  • Doxygen 报告“潜在的递归类关系”

    我有一个 C 模板类base Foo
  • Scala 中表达式和语句有什么区别

    我是 Scala 世界的新手 想知道表达式和语句之间有什么区别 以及为什么 if else 用于表达式 而不是语句 是否有办法在 if else 中使用语句 EDIT 正如 J rg W Mittag 在评论中指出的 这个答案实际上是错误的
  • 为什么java Native Memory Tracking中的内部内存增加

    我的应用程序在docker容器中运行 它使用scala并使用 OpenJDK 64位服务器VM 构建25 102 b14 混合模式 其Xmx设置为16GB 容器内存限制为24Gb 运行一段时间后容器被杀死的时间 Last State Ter
  • scanf("%d", char*) - char-as-int 格式字符串?

    字符作为数字的格式字符串修饰符是什么 我想使用 sscanf 将一个不超过 255 实际上少得多 的数字读入 unsigned char 类型变量 使用典型的 char source x32 char separator unsigned
  • 使用 JavaScript 从 HTML 字符串中提取文本

    我试图使用 JS 函数获取 HTML 字符串的内部文本 字符串作为参数传递 这是代码 function extractContent value var content holder for var i 0 i lt value lengt
  • UiBinder 文件中的自定义标签

    当使用
  • 如何覆盖 AutoMapper 对单个属性的配置?

    我正在尝试使用 AutoMapper 12 0 0 来修复错误的字符串属性值 在下面的示例中 我的类具有一些字符串属性 并且对于除我需要执行的属性之外的所有属性 Trim 对于剩下的一个 我需要执行 ToUpper 代替 Trim 问题是我
  • android.accounts.AuthenticatorException:绑定失败

    我收到以下异常 我知道没有什么可继续的 但似乎几乎没有工作文档 可以说 我已经尝试了实现我自己的身份验证器的所有示例 我找到了建议的答案here https stackoverflow com questions 10736245 auth
  • 在此类的对象上调用 start() 安全吗? Java 并发实践中的一个例子

    首先 我将提供我将要讨论的源代码的链接 因为复制 粘贴会使这个问题页面太长 在清单 5 15 中http jcip net listings CellularAutomata java http jcip net listings Cell
  • Javascript构造函数属性有什么意义?

    试图深入研究 Javascript 对 OO 的看法 并且像许多其他人一样 遇到了关于 OO 的困惑constructor财产 特别是 其意义在于constructor财产 因为我似乎无法使其产生任何影响 例如 function Foo a
  • Netlify:如何部署嵌套在文件夹中的站点?

    我有一个存储库 它的后端和前端 create react app 位于两个单独的文件夹中 对于构建命令 我有类似的东西cd frontend npm run build对于发布目录 我有类似的东西frontend build 但这不起作用
  • 有没有办法在将文件写入响应后完成回发?

    我有一个按钮 单击该按钮后 将生成 PDF 并将其写出到响应中 这是代码的基本结构 try using Stream stream generatePdf var file createFile stream file Transmit H
  • 在 C# 中提取私钥字节

    我目前可以使用以下命令使用 OpenSSL 从 PFX 文件中提取私钥 openssl pkcs12 in filename pfx nocerts out privateKey pem openssl exe rsa in private
  • 初学者问题:从 Python 中的函数返回布尔值

    我试图让这个石头剪刀布游戏返回一个布尔值 如 set 中所示player winsTrue 或 False 具体取决于玩家是否获胜 或者完全重构此代码以使其不使用 while 循环 我来自世界的系统管理员 所以如果这是以错误的风格编写的 请
  • 如何将有向无环图 (DAG) 转换为树

    我一直在寻找将 DAG 转换为树的 C 示例 有人有正确方向的例子或指针吗 澄清更新 我有一个图表 其中包含我的应用程序需要加载的模块列表 每个模块都有一个它所依赖的模块列表 例如 这是我的模块 A B C D 和 E A 没有依赖关系 B
  • Haskell 中有“对象平等”的感觉吗?

    如果我在 Haskell 中有一个单链表 data LL a Empty Node a LL a deriving Show Eq 我可以轻松实现在末尾和开头插入的方法 但是在特定元素之后或之前插入又如何呢 如果我有一个LL of Inte
  • 可变字段数的数据库结构设计

    对于某种库存系统 用户可以创建一个item type它具有某些属性 现在每种类型的属性数量都是可变的 我应该如何使用 DBStructure 来解决这个问题 只需制作 X 份量propertyX领域 还是有其他方法可以以这种方式实现灵活性
  • 我何时以及为什么应该考虑 asp.net MVC?

    我最近注意到很多关于 asp net MVC 的讨论 但我还没有找到关于何时 何地或为何要在 WebForms 上使用它的清晰或令人信服的描述 假设我想构建一个小型 Web 应用程序 允许人们在线宣传某些商品 该网站将有 4 个用例 搜索广
  • Jackson 的 Access.WRITE_ONLY 在测试 null 期间

    我目前正在使用 Jackson 的反 序列化功能 遇到了一个问题 我不知道如何解决 在我的测试过程中 JsonProperty access JsonProperty Access WRITE ONLY 注释被忽略 它只显示null 然而