IBM MobileFirst 8 Java Adapter不接受json与正文中的数组

时间:2017-06-10 11:02:04

标签: java json ibm-mobilefirst jax-rs

我们遇到IBM MobileFirst 8 Java适配器的问题。我们有一个简单的方法,接受application / json。当发送到适配器的json很简单时,它会成功:

{"id":2, "priority": 45}

然而,当json“复杂”时,它“失败”:

{"id":2, "priority": 45, "list": [{"member": "a"}, {"member":"b"}]}

客户端收到500错误。日志中没有例外,也没有任何内容可以解释导致问题的原因。

适配器资源方法很简单:

@ApiOperation(value = "Post a object", notes = "") @ApiResponses(value = { @ApiResponse(code = 200, message = "Returns the posted object") }) @POST @Consumes("application/json") @Produces("application/json") @Path("/create") public Response create(JSONObject object) { logger.info("Object retrieved"); // Never triggers if "complex" json logger.info(object); return Response.ok(object).build(); }

在IBM Websphere Liberty上运行的IBM MobileFirst 8实例和IBM MobileFirst 8 DevKit中都可以看到该问题。

任何人都知道可能导致这种情况的原因,或者想知道如何找到原因?

1 个答案:

答案 0 :(得分:1)

解决方案似乎是将方法签名更改为create(String对象),然后将其解析为json,如下所示:

@ApiOperation(value = "Post a object", notes = "")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Returns the posted object") })
@POST
@Consumes("application/json")
@Produces("application/json")
@Path("/create")
public Response create(String object) {
    JSONObject json = JSONObject.parse(object);
    logger.info("Object retrieved"); 
    logger.info(json);
    return Response.ok(json).build();
}