【问题标题】:Excluding specific fields in a JSON String in Java [closed]在Java中排除JSON字符串中的特定字段[关闭]
【发布时间】:2020-09-08 10:49:08
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否正在使用 Spring?如果是这样就很容易了...
  • 解析 JSON,删除不想记录的字段和值,重新生成 JSON 文本,然后记录。

标签: java json gson


【解决方案1】:

如果你没有使用 Spring,这可以使用 JsonView: https://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,则可以在反序列化 JSON 时在要忽略的字段名称前使用 @JsonIgnore。示例:

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

【讨论】:

  • 让我试试看这是否适合我,谢谢!
  • @Maverick 不客气,如果可行,请将其标记为已接受的答案 - 如果不是,请告诉我出了什么问题! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
相关资源
最近更新 更多