use*_*427 6 java jackson object-object-mapping mongo-jackson-mapper
我的Controller返回一个MyObj对象列表(使用@ResponseBody)
public MyObj
{
int a;
int b;
}
Run Code Online (Sandbox Code Playgroud)
返回JSON如下所示:
[{"a":1,"b":2},{"a":2,"b":2}]
Run Code Online (Sandbox Code Playgroud)
我想包装这个JSON,所以它将返回如下内容:
{ "data": [{"a":1,"b":2},{"a":2,"b":2}]}
Run Code Online (Sandbox Code Playgroud)
从我读到的我需要启用SerializationConfig.Feature.WRAP_ROOT_VALUE或(?)在我的控制器上使用@JsonRootName("data").
还尝试了@XmlRootElement,似乎没什么用.知道用根名称包装对象列表的正确方法是什么?
这听起来像是在谈论放在@JsonRootName
列表而不是对象,这将无法完成你想要做的事情.
如果你想使用@JsonRootName
你想要SerializationFeature.WRAP_ROOT_VALUE
像上面提到的那样启用并将注释添加到类中:
@JsonRootName("data")
public MyObj {
int a;
int b;
}
Run Code Online (Sandbox Code Playgroud)
这将包装对象本身,而不是列表:
{
"listName": [
{
"data": {"a":1, "b":2}
},
{
"data": {"a":2, "b":2}
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果要将列表包装在对象中,则创建通用对象包装器可能是最佳解决方案.这可以通过以下类完成:
public final class JsonObjectWrapper {
private JsonObjectWrapper() {}
public static <E> Map<String, E> withLabel(String label, E wrappedObject) {
return Collections.singletonMap(label, wrappedObject);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您将回复列表发回之前,将其包装好JsonObjectWrapper.withLabel("data", list)
,杰克逊负责其余部分.
归档时间: |
|
查看次数: |
4145 次 |
最近记录: |