【问题标题】:JAX-RS - toString() of associated object in JSON property valueJAX-RS - JSON 属性值中关联对象的 toString()
【发布时间】:2015-04-23 17:35:17
【问题描述】:

我有这两个 Java 类

public class Artist {
    @Id
    private Integer id;
    private String name;
    private Short birthYear;
    @JsonIgnore                                                // This is Jackson
    @OneToMany(mappedBy = "artist", fetch = FetchType.EAGER)   // This is JPA
    private List<Album> albums = new ArrayList<Album>();
    . . .
    @Override
    public String toString() {
        return name;
    }
}

public class Album {
    @Id
    private Integer id;
    private String name;
    private Short releaseYear;
    @ManyToOne                                                 // This is JPA
    private Artist artist;
}

现在,我想要的是当我生成 Album 类的 JSON 对象时,它会返回如下内容:

{ 编号:2012000587, 名称:'Escultura', 发布年份:'2012', 艺术家:'Guaco' }

现在它输出:

{ 编号:2012000587, 名称:'Escultura', 发布年份:'2012', 艺术家 : { 编号:2044452000, 名称:'Guaco', 出生年份:1987 } }

我想不惜一切代价避免使用自定义序列化程序来解决这个问题。

我该怎么做?

【问题讨论】:

    标签: java json serialization jackson jax-rs


    【解决方案1】:

    尝试为name 属性添加getter 并使用@JsonValue 注释对其进行注释。

    public class Artist {
        private String name;
        ...
        @JsonValue
        public String getName() { return name; }
    }
    

    这是 Jackson Wiki 页面的 link 以供参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-24
      • 2012-07-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多