我有一个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
Java对象中的Foo
字段?
我尝试使用@JsonProperty("foo.bar")
对字段进行注释,但它不能像那样工作。
答案 0 :(得分:45)
这并不完美,但这是我能想到的最优雅的方式。
@JsonProperty("foo")
public void setFoo(Map<String, Object> foo) {
bar = (Integer) foo.get("bar");
}
答案 1 :(得分:2)
这没有自动化功能(据我所知),但这是一个经常被请求的功能;有这个Jira RFE:http://jira.codehaus.org/browse/JACKSON-132听起来像你在寻找。
答案 2 :(得分:-3)
这是一个有效的简单示例:
<强> JSON:强>
[{"function":{"name":"Function 1"}},
{"function":{"name":"Function 2"}}]
<强>爪哇:强>
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");
}
}
答案 3 :(得分:-16)
这就像把苹果绑在橙子上一样!另一个“吸引人的短语”是“Impedance Mismatch”,或者是Star Trek 1,“Non Sequetor!”将它绑定到MATCHED对象,然后在不同类型的对象之间用Java进行新的赋值。