IBM MobileFirst 8 Java 适配器将不接受 json 中的数组
IBM MobileFirst 8 Java Adapter will not accept json with arrays in the body
我们遇到了 IBM MobileFirst 8 Java 适配器的问题。我们有一个简单的方法,接受application/json。当发送到适配器的 json 很简单时成功:
{"id":2, "priority": 45}
然而,"fails",当 json 是 "complex":
{"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 中都会出现此问题。
有谁知道是什么原因导致的,或者对如何查找原因有想法?
解决方案似乎是将方法签名更改为 create(String object),然后将其解析为 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();
}
我们遇到了 IBM MobileFirst 8 Java 适配器的问题。我们有一个简单的方法,接受application/json。当发送到适配器的 json 很简单时成功:
{"id":2, "priority": 45}
然而,"fails",当 json 是 "complex":
{"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 中都会出现此问题。
有谁知道是什么原因导致的,或者对如何查找原因有想法?
解决方案似乎是将方法签名更改为 create(String object),然后将其解析为 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();
}