JAX-RS - JSON 属性 值中关联对象的 toString()
JAX-RS - toString() of associated object in JSON property value
我有这两个Javaclasses
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;
}
现在,我想要的是当我制作 JSON 相册的对象时 class 它 returns 像这样:
{
id : 2012000587,
name : 'Escultura',
releaseYear : '2012',
artist : 'Guaco'
}
现在输出:
{
id : 2012000587,
name : 'Escultura',
releaseYear : '2012',
artist : {
id : 2044452000,
name : 'Guaco',
birthYear : 1987
}
}
我想不惜一切代价避免为此问题使用自定义序列化程序。
我该怎么做?
尝试为 name
属性 添加 getter 并用 @JsonValue
注释对其进行注释。
public class Artist {
private String name;
...
@JsonValue
public String getName() { return name; }
}
这里是 link Jackson Wiki 页面以供参考。
我有这两个Javaclasses
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;
}
现在,我想要的是当我制作 JSON 相册的对象时 class 它 returns 像这样:
{ id : 2012000587, name : 'Escultura', releaseYear : '2012', artist : 'Guaco' }
现在输出:
{ id : 2012000587, name : 'Escultura', releaseYear : '2012', artist : { id : 2044452000, name : 'Guaco', birthYear : 1987 } }
我想不惜一切代价避免为此问题使用自定义序列化程序。
我该怎么做?
尝试为 name
属性 添加 getter 并用 @JsonValue
注释对其进行注释。
public class Artist {
private String name;
...
@JsonValue
public String getName() { return name; }
}
这里是 link Jackson Wiki 页面以供参考。