首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回JSON错误以及HTTP状态代码错误JAX

返回JSON错误以及HTTP状态代码错误JAX
EN

Stack Overflow用户
提问于 2017-02-17 10:31:14
回答 1查看 965关注 0票数 0
代码语言:javascript
复制
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/data/services")
public Response  DiscoverDevice(BlockDevsPost blockdevice) {

    for (DeviceIdentifier device : blockdevice.getDevice()) {
        String dev = device.Device();
        System.out.println("DEVICE "+ dev);
        if (dev == null || dev.equals("")){
            return Response.status(Response.Status.BAD_REQUEST).entity("Device cannot be null or empty.").build();
        }
    }
}

dev为null时,从REST客户端触发POST时会获得此错误。我无法获得JSON,因此引发了以下错误:

位于0位置的意外字符(D)。设备标识符不能为空或空。

其中D在设备标识符中标记为红色,这意味着它不返回JSON作为响应。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-18 09:16:39

您的客户机希望获得JSON,但是您已经在响应实体中设置了一个普通字符串,并将application/json设置为内容类型。您需要返回一个有效的JSON。例如

代码语言:javascript
复制
return Response
           .status(Response.Status.BAD_REQUEST)
           .entity("{\"error\":\"Device cannot be null or empty.\"}")
           .build();

还可以使用首选映射程序构建json响应字符串(需要添加依赖项)。这是一个使用Jackson的例子。

使用API的Jackson

代码语言:javascript
复制
ObjectMapper mapper  = new ObjectMapper();
ObjectNode objectNode = mapper.createObjectNode();
objectNode.put("error", "Device cannot be null or empty.");
String json = mapper.writeValueAsString(objectNode);

使用POJOJackson

代码语言:javascript
复制
class ErrorBean{
   private String error;
   //getters and setters
}

ObjectMapper mapper = new ObjectMapper();
ErrorBeanerrorBean = new ErrorBean();
errorBean.setError ("Device cannot be null or empty.");
String json = mapper.writeValueAsString(errorBean);

您还可以从服务方法返回POJO,并让JAX实现将它们转换为JSON (这意味着更改响应类型)。请参阅https://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42295582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档