Restlet XStream / Jackson不同的JSON包装器

时间:2012-01-17 15:40:04

标签: json annotations jackson restlet xstream

我想从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解释的

1 个答案:

答案 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