在这种情况下如何使用@JsonProperty - jackson API with lombok
how to use @JsonProperty in this case - jackson API with lombok
我知道如何在 jackson API 中使用 @JsonProperty
但下面的情况不同。
我在下面 json 片段。
{"results":[{"uniqueCount":395}
所以,为了用 jackson
API 解析上面的 json,我在下面写了 java pojo class.
package com.jl.models;
import lombok.Data;
@Data
public class Results
{
private int uniqueCount;
}
后来,我在下面解析了类似的 json 片段。
{"results":[{"count":60}
现在,这里的问题是我无法用 Results
class 解析这个 json,因为它需要一个字符串 uniqueCount
。
我可以轻松创建另一个 java pojo class 具有 count
成员变量,但我必须创建所有父 java classes 具有Results
class 的实例。
那么,有什么方法可以自定义 Results
class 具有 lombok
行为来解析两个 json 而不会相互影响?
提前感谢您的帮助。
您可以使用 Jackson 的 @JsonAnySetter 注释将所有未知键指向一个方法,然后您可以自己进行分配:
@Data
public class Results
{
private int uniqueCount;
// all unknown properties will go here
@JsonAnySetter
public void setUnknownProperty(String key, Object value) {
if (key.equals("count")) {
uniqueCount = (Integer)value;
}
}
}
我知道如何在 jackson API 中使用 @JsonProperty
但下面的情况不同。
我在下面 json 片段。
{"results":[{"uniqueCount":395}
所以,为了用 jackson
API 解析上面的 json,我在下面写了 java pojo class.
package com.jl.models;
import lombok.Data;
@Data
public class Results
{
private int uniqueCount;
}
后来,我在下面解析了类似的 json 片段。
{"results":[{"count":60}
现在,这里的问题是我无法用 Results
class 解析这个 json,因为它需要一个字符串 uniqueCount
。
我可以轻松创建另一个 java pojo class 具有 count
成员变量,但我必须创建所有父 java classes 具有Results
class 的实例。
那么,有什么方法可以自定义 Results
class 具有 lombok
行为来解析两个 json 而不会相互影响?
提前感谢您的帮助。
您可以使用 Jackson 的 @JsonAnySetter 注释将所有未知键指向一个方法,然后您可以自己进行分配:
@Data
public class Results
{
private int uniqueCount;
// all unknown properties will go here
@JsonAnySetter
public void setUnknownProperty(String key, Object value) {
if (key.equals("count")) {
uniqueCount = (Integer)value;
}
}
}