【发布时间】:2014-03-30 12:46:31
【问题描述】:
我的 POJO:
public class Album{
private String title;
private Object tracks; // I can not change the type, beyond my control..
/** setter **/
....
/** getter **/
....
}
public class Track{
private String title;
private String singer;
/** setter **/
....
/** getter **/
....
}
主要方法:
public static void main(String[] args)
{
Album album = new Album ();
album.setTitle("Thriller");
Track track = new Track();
track.setTitle("Beat It");
track.setSinger("M.J");
List<Track> trackLst = new ArrayList<Track>();
trackLst.add(track);
Album.setTracks(trackLst);
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, As.PROPERTY);
m.writeValue(System.out, album);
}
/** console printed **/
{
"title": "Thriller";
"tracks":[
"java.util.ArrayList",
[
{
"@class":"com.hs.Track",
"title":"Beat It",
"singer":"M.J"
}
]
]
}
如您所见,音轨序列化为一个 jsonArray,一个元素是类型(ArrayList),另一个是真正的 jsonArray。有什么解决方案可以保留真正的 jsonArray 吗?像这样:
{
"title": "Thriller";
"tracks":
[
{
"@class":"com.hs.Track",
"title":"Beat It",
"singer":"M.J"
}
]
}
【问题讨论】:
标签: object serialization jersey jackson