【问题标题】:Limiting the json fields that need to be deserialized into java object's fields将需要反序列化的json字段限制为java对象的字段
【发布时间】:2013-08-06 15:06:08
【问题描述】:

我有一个 Json:

{ 
   "a1":"a1Value",
   "a2":"a2Value",
   "a3":"a3Value",
   "a4":"a4Value",
   "a5":"a5Value" 
}

Java 类是:

class Response {
    private String a1;
    private String a2;
    private String a3;

    //public getters and setters
}

现在我只需要将 Json 中的 3 个字段反序列化为对象的 3 个字段,我使用 Spring 3.2.2 MVC,用于 REST 支持(rest template : getForEntity()) ,并且在此过程中出错,我怎样才能忽略json中的这些字段?此外,是否有某种方法,在序列化时,我也只序列化那些在序列化时具有非空值的对象属性。

【问题讨论】:

  • 创建您自己的MessageConverter

标签: java json spring rest


【解决方案1】:

在类级别添加此注释以忽略未知属性:

@JsonIgnoreProperties(ignoreUnknown = true)

ObjectMapper:

objectMapper.configure
      (DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);

仅适用于非空:

@JsonInclude(Include.NON_NULL)

或杰克逊ObjectMapper

objectMapper.setSerializationInclusion(Include.NON_NULL);

【讨论】:

  • 我认为最后一个应该是mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);,但我可能错了。我一般也用mapper.setSerializationConfig(mapper.getSerializationConfig().withSerializationInclusion(JsonSerialize.Inclusion.NON_NULL));
  • @OldCurmudgeon:是的,您对 ObjectMapper 的权利也可以配置为跳过未知属性。我可以更新我的答案以使其更详细)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
相关资源
最近更新 更多