mar*_*tin 32 java rest spring json http-status-codes
在控制器中我创建了json数组.如果我退货List<JSONObject>
就可以了:
@RequestMapping(value="", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<JSONObject> getAll() {
List<Entity> entityList = entityManager.findAll();
List<JSONObject> entities = new ArrayList<JSONObject>();
for (Entity n : entityList) {
JSONObject entity = new JSONObject();
entity.put("id", n.getId());
entity.put("address", n.getAddress());
entities.add(entity);
}
return entities;
}
Run Code Online (Sandbox Code Playgroud)
但我需要返回JSON数组和HTTP状态代码:
@RequestMapping(value="", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<List<JSONObject>> getAll() {
List<Entity> entityList = entityManager.findAll();
List<JSONObject> entities = new ArrayList<JSONObject>();
for (Entity n : entityList) {
JSONObject Entity = new JSONObject();
entity.put("id", n.getId());
entity.put("address", n.getAddress());
entities.add(entity);
}
return new ResponseEntity<JSONObject>(entities, HttpStatus.OK); // XXX
}
Run Code Online (Sandbox Code Playgroud)
Eclipse在XXX行中看到错误:
Multiple markers at this line
- The constructor ResponseEntity<JSONObject>(List<JSONObject>, HttpStatus) is undefined
- Type mismatch: cannot convert from ResponseEntity<JSONObject> to
ResponseEntity<List<JSONObject>>
- Type mismatch: cannot convert from ResponseEntity<JSONObject> to JSONObject
Run Code Online (Sandbox Code Playgroud)
我怎样才能返回json + http回复?有我的工作代码返回一个json对象+ http状态代码:
@RequestMapping(value="/{address}", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<JSONObject> getEntity(@PathVariable("address") int address) {
Entity n = entityManager.findByAddress(address);
JSONObject o = new JSONObject();
o.put("id", n.getId());
o.put("address", n.getAddress());
return new ResponseEntity<JSONObject>(o, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
小智 29
代替
return new ResponseEntity<JSONObject>(entities, HttpStatus.OK);
Run Code Online (Sandbox Code Playgroud)
尝试
return new ResponseEntity<List<JSONObject>>(entities, HttpStatus.OK);
Run Code Online (Sandbox Code Playgroud)
mar*_*tin 21
现在我回来了Object
.我不知道更好的解决方案,但它确实有效.
@RequestMapping(value="", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<Object> getAll() {
List<Entity> entityList = entityManager.findAll();
List<JSONObject> entities = new ArrayList<JSONObject>();
for (Entity n : entityList) {
JSONObject Entity = new JSONObject();
entity.put("id", n.getId());
entity.put("address", n.getAddress());
entities.add(entity);
}
return new ResponseEntity<Object>(entities, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我更喜欢将方法签名更改为:
public ResponseEntity<?>
Run Code Online (Sandbox Code Playgroud)
这提供了可能将错误消息作为服务的单个项目返回的优点,当确定时,返回项目列表.
返回时我不使用任何类型(在这种情况下未使用):
return new ResponseEntity<>(entities, HttpStatus.OK);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
116484 次 |
最近记录: |