java - 如何过滤JSON中的一些特殊字段?

标签 java json

我想跳过 JSON 解析中的一些特殊内容。
假代码:

class A {
    String name;
    Boolean isOk;
}

我的实例:

A a1 = new A("fake1", true);  
A a2 = new A("nobody", false);

当 name 为“nobody”时,解析将跳过此字段。

所以我期望的 json 是:

a1 -> {"name":"fake1","isOk":"true"}
a2 -> {"isOk":"false"}

我知道有一种方法可以通过编写 TypeAdapterJsonSerializer 来解决这个问题。
还有其他更通用的工具吗?

最佳答案

Jackson 默认使用 getter 方法来获取值。在 getter 中执行此操作比在自定义序列化程序中执行要简单得多:

String getName() {
    return "nobody".equals(name) ? null : name;
}

如果你无法修改 getter,你可以为 Jackson 制作另一个 getter:

@JsonProperty("name")
String getNameUnlessNobody() {
    return "nobody".equals(name) ? null : name;
}

// tell jackson to ignore standard getter
@JsonIgnore
String getName() {
    return name;
}

但并不那么简单。

关于java - 如何过滤JSON中的一些特殊字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44521183/

相关文章:

java - BigInteger 方法 mod() 性能很差。对于大量的数据是否有更好的权衡?

java - 是否可以引用静态字符串作为Android list 中的值?

java - 在微粒字符串匹配后删除文件内容

jquery - Angular JS : html table columns ordering not working

javascript - html 5属性作为对象数组被视为字符串

不使用 JLabel 的 Java 动画 GIF

java - 除了制作类型安全集合之外,在 Java 中使用泛型?

javascript - Soundcloud 嵌入流 URL( Node 、JSON)

json - 如何将字符串编码/解码为 gson

json - 无需在 Swift 中关闭应用程序即可重新加载已解析的 URL