我的应用程序在后端使用多个POJO来将数据从后端编组到UI。数据以字符串形式从DB发送,使用Jackson将其映射到我们的POJO中,然后使用@Produces(MediaType.APPLICATION_JSON)
返回API调用中的对象。在将应用程序迁移到JBoss 7 EAP时,我们注意到,带有@XmlTransient
的任何字段在返回到UI时都不会编组到JSON中。 POJO对象填充了所有字段,但是在UI端,它们根本不会显示在JSON字符串中。示例:
//class POJO
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FetchDataVO {
@XmlTransient
private String Id;
private String name;
@XmlTransient
private String domain;
}
我们的API响应如下:
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "getUserById", nickname = "getUserById")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success", response = FetchDataVO.class),
@ApiResponse(code = 401, message = "Unauthorized"),
@ApiResponse(code = 403, message = "Forbidden"),
@ApiResponse(code = 404, message = "Not Found"),
@ApiResponse(code = 500, message = "Failure")})
public @ResponseBody
@Valid fetchDataVO getUserById(
@PathParam("id") String id){
FetchDataVO fetchVO = callDataBase.getUserById(id);
//All the data will be present here, everything is correct so far
log.info("fetchVO contents - " + fetchVO.printDetails());
return fetchVO;
}
我们的后端代码将在所有字段正确的情况下打印出POJO。但是,当我们在用户界面中调用它时,我们看到的响应为:
{"name":null}
其他字段甚至都没有显示。就像我提到的那样,这只是在由于JBoss升级而迁移到杰克逊的3.0+版本之后才发生。
我的应用程序在后端使用多个POJO来将数据从后端编组到UI。数据作为字符串来自数据库,它使用Jackson映射到我们的POJO中,然后返回...
Jackson能够识别JAXB批注以配置序列化/反序列化。