gpt4 book ai didi

java - 在没有适当字段的情况下使用 Jackson 反序列化 JSON

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:30 24 4
gpt4 key购买 nike

我有这个 JSON:{"success":false}

我想将它反序列化到这个 POJO 中:

class Message {
private Map<String, String> dataset = new HashMap<String, String>();

@JsonProperty("success")
public boolean isSuccess() {
return Boolean.valueOf(dataset.get("success"));
}

@JsonProperty("success")
public void setSuccess(boolean success) {
dataset.put("success", String.valueOf(success));
}
}

是否可以将此 JSON 反序列化为没有字段 success 的类?到目前为止,我总是得到“UnrecognizedPropertyException:无法识别的字段“成功””

感谢您的帮助!

最佳答案

您可以实现一个方法并使用 @JsonAnySetter 对其进行注释,如下所示:

@JsonAnySetter
public void handleUnknownProperties(String key, Object value) {
// this will be invoked when property isn't known
}

另一种可能性是像这样关闭此故障:

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

这可以让您反序列化 JSON 而不会在找不到属性时失败。

测试


public static class Message {
private final Map<String, String> dataset = new HashMap<String, String>();

@Override
public String toString() {
return "Message [dataset=" + dataset + "]";
}

}

@Test
public void testJackson() throws JsonParseException, JsonMappingException, IOException {
String json = "{\"success\":false}";
ObjectMapper om = new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
System.out.println(om.readValue(json, Message.class));
}

关于java - 在没有适当字段的情况下使用 Jackson 反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11315389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com