首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot body (Spring Boot RESTful)返回null

Spring Boot body (Spring Boot RESTful)返回null
EN

Stack Overflow用户
提问于 2017-10-03 10:09:16
回答 3查看 21K关注 0票数 6

我正在使用以下可用服务创建一个RESTFul网络服务:

代码语言:javascript
复制
@RequestMapping(value = "/test", produces = "application/json", method = RequestMethod.GET)
public ResponseEntity<List<GenericModel>> returnEmpty() {
    List<GenericModel> genericModelList = new ArrayList<>();

    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=utf-8");

    return responseEntity = new ResponseEntity<>(genericModelList, headers, HttpStatus.OK);
}

当空列表返回时,我在浏览器中得到以下响应:

代码语言:javascript
复制
[]

如何在浏览器中接收"null“响应而不是[]?有什么方法可以告诉Spring将我的列表大小0呈现为"null“而不是[]?

EN

回答 3

Stack Overflow用户

发布于 2017-10-03 10:16:41

根据genericModelList是否为空或not来旋转它的一种方法是:-

代码语言:javascript
复制
if(genericModelList.isEmpty()) {
    return new ResponseEntity<>(null, headers, HttpStatus.OK);
} else {
    return new ResponseEntity<>(genericModelList, headers, HttpStatus.OK);
}

或者,您也可以使用ResponseEntity(MultiValueMap headers, HttpStatus status)构造函数跳过body

票数 3
EN

Stack Overflow用户

发布于 2017-10-03 10:19:58

因为您只是将genericModelList初始化为的空列表,而不是null。或者您可以在发送不同body的响应之前检查列表的大小。

票数 1
EN

Stack Overflow用户

发布于 2017-10-05 01:04:55

谢谢大家,下次我会尽量讲得更清楚。我解决了这个问题。

当我的列表大小为0时,我试图在ResponseEntity>的主体中发送"null“,但是Jackson创建了一个"[]”JSON,而不是我想要的"null“。我没有找到一种方法来改变这个默认的Jackson行为,所以我决定放弃Jackson,转而使用Gson库。

让我展示一个我的解决方案的示例:

代码语言:javascript
复制
@RequestMapping(value = "/test", produces = "application/json", method = RequestMethod.GET)
public ResponseEntity<String> returnEmpty() {

    List<GenericModel> genericModelList = new ArrayList<>();

    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=utf-8");

    String body = "";

    if (genericModelList.size() == 0) {
        body = "null";
    } else {
        body = gson.toJson(genericModelList);
    }

    return responseEntity = new ResponseEntity<>(body, headers, HttpStatus.OK);
}

这样,我自己返回一个字符串并使用Gson解析到JSON,而不是使用Spring/Jackson的自动解析,我就可以控制生成的JSON。如果我的List.size() ==为0,我会显式返回一个字符串"null“。

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

https://stackoverflow.com/questions/46536208

复制
相关文章

相似问题

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