我正在使用以下服务创建RESTFul Web服务:
@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);
}
当空列表返回时,我在浏览器中收到以下响应:
[]
如何在浏览器中接收“null”响应而不是[]?有一些方法可以告诉Spring将列表大小0渲染为“null”而不是[]?
答案 0 :(得分:2)
根据genericModelList
是否为空而转动它的一种方法可能是: -
if(genericModelList.isEmpty()) {
return new ResponseEntity<>(null, headers, HttpStatus.OK);
} else {
return new ResponseEntity<>(genericModelList, headers, HttpStatus.OK);
}
或者您也可以使用ResponseEntity(MultiValueMap<String,String> headers, HttpStatus status)
构造函数跳过body
。
答案 1 :(得分:1)
因为您只是将@media (max-width: 767px) {
#header-inner a img {
height: auto;
}
}
初始化为空列表,而不是null。或者,您可以在向不同机构发送回复之前检查列表的大小。
答案 2 :(得分:0)
谢谢大家,下次我会更加清楚。我解决了这个问题。
我试图发送&#34; null&#34;在我的ResponseEntity&gt;的主体中;当我的列表大小为0时,杰克逊创建了一个&#34; []&#34; JSON而不是&#34; null&#34;我想要的。我没有找到改变杰克逊默认行为的方法,所以我决定放弃杰克逊并使用Gson图书馆。
让我举一个我的解决方案的例子:
@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);
}
这样,返回一个String并使用Gson自己解析为JSON而不是使用Spring / Jackson的自动解析,我可以控制生成的JSON。看看我明确地返回一个String&#34; null&#34;如果我的List.size()== 0。