我有一个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中进行新分配。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top