所以,开始我有这个课程:
public class PaginatedList<?> extends ArrayList<?>{
private int startIndex;
private int endIndex;
public PaginatedList(int startIndex, int endIndex...){
this.startIndex = startIndex;
this.endIndex = endIndex;
//Do pagination stuffs.
}
}
和这堂课:
public class UserList extends PaginatedList<User>{
public UserList(int startIndex, int endIndex...){
super(startIndex, endIndex...);
}
}
现在,当我的资源返回UserList时,它会按预期打印出用户列表:
[
{
"userName":"binky",
"age":115
}
]
但是,我希望输出如下:
{
"users":
[
{
"userName":"binky",
"age":115
}
],
"pagination":
{
"startIndex":5,
"endIndex":10
}
}
所以,我用@JSONRootName(“”)注释它们。
@JsonRootName("pagination")
public class PaginatedList extends ArrayList<?>{}
@JsonRootName("activities")
public class UserList extends PaginatedList<User>{}
并创建了一个用于设置ObjectMapper的类:
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class Resolver implements ContextResolver<ObjectMapper>{
private ObjectMapper objectMapper;
public ObjectMapperProvider(){
objectMapper = new ObjectMapper();
}
@Override
public ObjectMapper getContext(Class<?> type) {
if(type.getAnnotation(JsonRootName.class) != null){
objectMapper.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
}else{
objectMapper.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, false);
}
return objectMapper;
}
}
此实施仍然无法解决我的问题。编组的json不会返回未包装的根值。
我正在使用球衣POJOMAPPING。
有什么想法吗?
答案 0 :(得分:0)
似乎@JsonRootResource更多地保留了属性,而不是类级声明。这应该会产生编译错误,但不会。