java - 使用 Jackson 创建平面对象形式的嵌套 json

标签 java json jackson

我知道 Jackson 允许使用 @JsonUnwrapped 创建平面 json,这样类的对象就像

public class Person {
    public int age;
    @JsonUnwrapped public Name name;

    public class Name {
        public String first, last;
    }
}

会被序列化为

{"age" : 99, "first" : "Name", "last" : "Surname"}

但是,我找不到相反的方法 - 有一个类似的类

public class Person {
    public int age;
    public String firstName, lastName;
}

并将其对象序列化和反序列化

{"age" : 99, "name" : {"first" : "Name", "last" : "Surname"}}

这可能使用 Jackson 1.9 吗?

最佳答案

我在寻找同样的问题时偶然发现了这个相当古老的问题。我最终这样做了:

public class Person {
  public int age;

  @JsonIgnore
  public String firstName, lastName;

  protected void setName(PersonName name) {
    firstName = name.first;
    lastName = name.last;
  }

  protected PersonName getName() {
    return new PersonName(firstName, lastName);
  }

  protected static class PersonName {
    private final String first, last;

    @JsonCreator
    public PersonName(@JsonProperty("first") String first, @JsonProperty("last") String last) {
      this.first = first;
      this.last = last;
    }
  }
}

关于java - 使用 Jackson 创建平面对象形式的嵌套 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749777/

相关文章:

获取mediaPlayer.getCurrentPosition时随机出现java.lang.illegalStateException

java - Realm 不断调用 onChange addChangeListener

javascript - nodejs如何从aws s3存储桶获取JSON而不是Buffer

c# - android 改造使用 asp.net web api [FromBody] 始终为 null

java - 如何使用 Jackson 将自定义方法的输出序列化为 JSON?

java - 如何创建批处理文件并使用参数执行 jar 文件

json - 用于 JSON 数据的 Jasper Reports 数据源

java - 根据对象类型反序列化 JSON

java - Jackson ObjectMapper - 更改 ObjectReader 上的配置是否会影响多个线程对 ObjectMapper 的使用

java - 我可以从java中的类实例中删除方法吗?