我想从Xstream切换到Jackson,以便在Restlet服务器中序列化/反序列化对象。如果我使用Xstream库:
@Get("json")
public Profile retrieve() {
Profile prf = new Profile (...);
...
return prf;
}
我会得到类似的东西:
{"Profile":{"id": 1, "name": "jack" ... }}
与杰克逊一起,我只得到:
{"id": 1, "name": "jack" ... }
如何与杰克逊获得相同的JSON?我需要这个在我的客户端的KVC对象(否则我需要手动指定映射)
如果我返回一个ArrayList<我有同样的问题个人资料> ,jackson在序列化时不会包含“个人档案”列表,而是包含JSON而不是
{Profile:[{firstProfile}, {secondProfile}]}
看起来像:
[{firstProfile}, {secondProfile}]
我也一直在尝试使用杰克逊注释:
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.WRAPPER_OBJECT)
public class MyProfileServerResource extends ServerResource {
但似乎它不是由restlet解释的
答案 0 :(得分:0)
注释的正确位置在Profile类中:
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.WRAPPER_OBJECT)
public class Profile extends Element implements Serializable {
和json现在看起来像:
{"Profile":{ ... }}
,返回类型是一个子类列表:
public class ProfileList extends ArrayList<Profile>
{}
请参阅http://wiki.fasterxml.com/JacksonPolymorphicDeserialization 5.1