我的java模型类如下所示。
@Entity(name = "bank_um_privilege")
@JsonRootName(value="Privilege")
public class Privilege extends Model {
private static final long serialVersionUID = -8307505934865392503L;
@Id
@Column(name = "privilege_name", nullable = false)
private String privilegeName;
@Column(name = "description", nullable = false)
private String description;
}
我为传递值创建了其他完整的Web服务。
@GET
@Path(WSPath.GET_ALL_USER_PRIVILEGES)
public Response getUserPrivileges() throws JsonGenerationException, JsonMappingException, IOException {
List<Privilege> userPrivileges = userService.getUserPrivileges();
ObjectMapper om = new ObjectMapper();
om.configure(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
return Response.ok(om.writeValueAsString(userPrivileges)).build();
}
我发送上述特权列表作为回复。回应如下所示。
"ArrayList":
[
{
"version": 0,
"privilegeName": "ADMIN_LOGIN",
"description": "Login authority to administration application",
"code": "900",
"status": 0,
"category": "User Management"
},...
现在我需要在上面的json对象中添加root元素,看起来就像那样。需要添加&#34; Privilege&#34;名称为&#34; ArrayList&#34;
的根名称"privilege":{
"version": 0,
"privilegeName": "ADMIN_LOGIN",
"description": "Login authority to administration application",
"code": "900",
"status": 0,
"category": "User Management"
},...
我正在使用JPA来保存数据。告诉我任何一个我该怎么做。
答案 0 :(得分:0)
在Spring
中,您有默认的ObjectMapper
bean,它将您的对象序列化为JSON
。您必须使用以下代码覆盖此默认bean:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
使用它,您的输出应该与您预期的一样。
更新1
在这种情况下,当您想要将项目包装在集合中时,您必须实现自定义序列化程序并使用此序列化程序注释特定的List<POJO> property
。有关此问题,请参阅@Sotirios_Delimanolis的答案:Jackson JSON List with Object Type。