使用Jackson将JSON响应反序列化为DTO。
对于给定的回复:
[ {
foo : "bar",
value : "hello world"
},
{
foo : "bar",
value : "hello world"
},
{
foo : "bar",
value : "hello world"
},
{
foo : "bar",
} ]
您可以看到此数组中的所有对象,但其中一个对象在架构中是不一致的(最后一个)。
在查看StackOverflow上的其他一些相关问题之后:
deserializing json using jackson with missing fields
Ignore null fields when DEserializing JSON with Gson or Jackson
他们仍然从那个不规则的JSON对象创建一个对象。
这意味着我需要遍历此列表并删除任何没有属性" value"通过实施清洁方法。
我想知道杰克逊能为我做这个商业逻辑吗?
If this JSON object has all the required fields
Then create a new DTO
Else
Skip to next JSON object in response
我的DTO与Jackson注释:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public final class FooDTO {
private final String foo;
private final String value;
/**
* Constructor
*
* @param foo String
* @param value String
*/
@JsonCreator
public FooDTO(@JsonProperty("foo") final String foo, @JsonProperty("value") final String value) {
this.foo = checkNotNull(foo, "foo required");
this.value = value;
}
@JsonProperty("foo")
public void setFoo(final String foo) {
this.foo = foo;
}
/**
* @return String
*/
public String foo() {
return foo;
}
etc...
来自给定JSON响应的结果是初始化3个DTO,而不是4。
答案 0 :(得分:0)
也许下面的注释可能有帮助吗?
@JsonIgnoreProperties(ignoreUnknown = true)