java - 使用 Jackson 反序列化 JSON 时去除空格

标签 java json jackson

我有一个 Dropwizard 应用程序,其中包含一堆已发布的 API。我需要从传入的字符串值(例如地址、名称)中去除尾随/前导空格以及回车符、制表符等。我考虑配置一个 JSON 反序列化器来执行此操作,而不是手动更改每个 API 实现。

我似乎在 jackson 找不到这样的选择。另外,即使我创建一个自定义反序列化器并找到如何在 Dropwizard 应用程序中注册它,似乎每个反序列化器都是根据特定类而不是“全局”配置的。

我的问题是 Jackson 中是否有一个选项可以为任何 java.lang.String 属性(简单的或另一个对象的一部分)或某种全局回调方法配置全局反序列化器,这将允许我检查并可能修改JSON 属性值。

最佳答案

我找到了解决方案。通过实现自定义 JsonDeserializer,您可以操作值。

public class WhitespaceDeserializer extends JsonDeserializer<String> {
    @Override
        public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        return p.getText().trim();
}

然后必须向对象映射器注册反序列化器:

ObjectMapper mapper = new ObjectMapper();
SimpleModule simpleModule = new SimpleModule().addDeserializer(String.class, new WhitespaceDeserializer());
mapper.registerModule(simpleModule);

比我想象的要多一点工作 - 我希望有一种简单的现有方法可以在某处设置标志,但这确实有效。

关于java - 使用 Jackson 反序列化 JSON 时去除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72705391/

相关文章:

javascript - 使用 JSON 对象创建表,为什么最后一行有两行 'td' 和第一个空行

Java + JSON : list of anonymous objects (key + value) with different key names

java - java和奇怪的XML在Android Studio(3.2.1)中损坏的java和xml文件

java - 从 JAVA MySQLdb 导入调用 Python 脚本

java - 如何在按钮中显示图像?

java - 使用 Jackson 的 JSON 字符串序列化(驼峰式)和反序列化(蛇式)

java - Jackson ObjectMapper 的日期和时间戳序列化

java - 返回 Ljava.lang.Object 的字符串值

java - 使用 JACKSON 读取 JSON 文件

c# - 将 JSON 对象映射到 C# 类属性