将JSON儿童对象属性绑定到Jackson的Java对象字段
-
11-10-2019 - |
题
我有一个JSON对象,说:
{
"foo": {
"bar": 1
},
"baz": 2
}
我想将其绑定到Java对象中,例如:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
private int bar;
@JsonProperty("baz")
private int baz;
}
我如何设置价值 foo.bar
从JSON到 bar
字段 Foo
Java对象?
我尝试用注释字段 @JsonProperty("foo.bar")
, ,但这是不起作用的。
解决方案
这不是完美的,但这是我能找到的最优雅的方式。
@JsonProperty("foo")
public void setFoo(Map<String, Object> foo) {
bar = (Integer) foo.get("bar");
}
其他提示
(据我所知)没有自动化功能,但这是一个经常要求的功能。有这个jira rfe: http://jira.codehaus.org/browse/jackson-132 这听起来像您要寻找的东西。
这里有一个可行的快速示例:
JSON:
[{"function":{"name":"Function 1"}},
{"function":{"name":"Function 2"}}]
Java:
import java.util.Map;
import javax.xml.bind.annotation.XmlRootElement;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
@Getter
@Setter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class Function {
@JsonProperty("name")
private String name;
@JsonProperty("function")
public void setFunction(Map<String, Object> function) {
name = (String) function.get("name");
}
}
这就像将苹果绑在橙色上!另一个“醒目的短语”将是“阻抗不匹配”,或者在《星际迷航1》中,“非续集!”将其绑定为匹配的对象,然后在不同种类的对象之间在Java中进行新分配。
不隶属于 StackOverflow