首页 > 解决方案 > 在 Java 中排除 JSON 字符串中的特定字段

问题描述

我有一个 JSON 格式的字符串:

{"a":"val1", "b":"val2"}

我想过滤掉这个字段,比如a在记录之前。可能有多个字段需要过滤,这些字段以前可能不知道。我正在研究 Gson 库的排除策略,但它无法识别字符串中的字段。

标签: javajsongson

解决方案


如果您不使用 Spring,可以使用JsonViewhttps ://github.com/monitorjbl/spring-json-view 来完成。

基本用法非常简单:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import static com.monitorjbl.json.Match.match;

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(JsonView.class, new JsonViewSerializer());
mapper.registerModule(module);

mapper.writeValueAsString(JsonView.with(list)
      .onClass(MyObject.class, match()
        .exclude("contains"))
      .onClass(MySmallObject.class, match()
        .exclude("id"));

或者,如果您使用的是 Spring,则可以@JsonIgnore在反序列化 JSON 时在要忽略的字段名称之前使用。例子:

@JsonIgnore
@JsonProperty(value = "user_password")
public String getUserPassword() {
    return userPassword;
}
        

推荐阅读