Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧:返回@ResponseBody“;响应性<;列表<;JSONObject>&燃气轮机&引用;_Java_Json_Spring_Rest_Http Status Codes - Fatal编程技术网

Java 弹簧:返回@ResponseBody“;响应性<;列表<;JSONObject>&燃气轮机&引用;

Java 弹簧:返回@ResponseBody“;响应性<;列表<;JSONObject>&燃气轮机&引用;,java,json,spring,rest,http-status-codes,Java,Json,Spring,Rest,Http Status Codes,在控制器中,我创建json数组。如果我返回列表就可以了: @RequestMapping(value="", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE) public @ResponseBody List<JSONObject> getAll() { List<Entity> entityList = entityManager.findAll(); List&

在控制器中,我创建json数组。如果我返回
列表
就可以了:

@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;
}
@RequestMapping(value=”“,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody List getAll(){
List entityList=entityManager.findAll();
列表实体=新的ArrayList();
对于(实体n:entityList){
JSONObject实体=新的JSONObject();
entity.put(“id”,n.getId());
entity.put(“地址”,n.getAddress());
实体。添加(实体);
}
返回实体;
}
但我需要返回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
}
@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);
}
@RequestMapping(value=”“,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody ResponseEntity getAll(){
List entityList=entityManager.findAll();
列表实体=新的ArrayList();
对于(实体n:entityList){
JSONObject实体=新的JSONObject();
entity.put(“id”,n.getId());
entity.put(“地址”,n.getAddress());
实体。添加(实体);
}
返回新的响应属性(实体,HttpStatus.OK);//XXX
}
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
此行有多个标记
-构造函数响应(列表,HttpStatus)未定义
-类型不匹配:无法从ResponseEntity转换为
反应性
-类型不匹配:无法从ResponseEntity转换为JSONObject
如何返回json+http回复?我的工作代码是返回一个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
}
@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);
}
@RequestMapping(value=“/{address}”,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody ResponseEntity getEntity(@PathVariable(“地址”)int address){
实体n=entityManager.findByAddress(地址);
JSONObject o=新的JSONObject();
o、 put(“id”,n.getId());
o、 put(“地址”,n.getAddress());
返回新的响应状态(o,HttpStatus.OK);
}

现在我返回
对象
。我不知道更好的解决方案,但它是有效的

@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);
}
@RequestMapping(value=”“,method=RequestMethod.GET,products=MediaType.APPLICATION\u JSON\u value)
public@ResponseBody ResponseEntity getAll(){
List entityList=entityManager.findAll();
列表实体=新的ArrayList();
对于(实体n:entityList){
JSONObject实体=新的JSONObject();
entity.put(“id”,n.getId());
entity.put(“地址”,n.getAddress());
实体。添加(实体);
}
返回新的响应属性(实体,HttpStatus.OK);
}
而不是

return new ResponseEntity<JSONObject>(entities, HttpStatus.OK);
返回新的响应属性(实体,HttpStatus.OK);
试一试

返回新的响应属性(实体,HttpStatus.OK);

就我个人而言,我更喜欢将方法签名更改为:

public ResponseEntity<?>
公共响应
这样做的好处是,可以将错误消息作为服务的单个项返回,当确定时,返回一个项列表

返回时,我不使用任何类型(在本例中无论如何都未使用):

返回新的响应属性(实体,HttpStatus.OK);

我迟到了,但我想提出一些与此相关的解决方案

 @GetMapping
public ResponseEntity<List<JSONObject>> getRole() {
    return ResponseEntity.ok(service.getRole());
}
@GetMapping
公共响应性getRole(){
返回ResponseEntity.ok(service.getRole());
}

我不知道为什么其他答案对我不起作用(错误500),但这是可行的

@GetMapping("")
public String 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.toString();
}
@GetMapping(“”)
公共字符串getAll(){
List entityList=entityManager.findAll();
列表实体=新的ArrayList();
对于(实体n:entityList){
JSONObject实体=新的JSONObject();
entity.put(“id”,n.getId());
entity.put(“地址”,n.getAddress());
实体。添加(实体);
}
返回实体.toString();
}

我认为应该是
返回新的ResponseEntity(实体,HttpStatus.OK)对吗?不管怎样,下面的解决方案很好。谢谢,它很有效。什么更好
ResponseEntity
ResponseEntity
您的观点是什么?就可读性而言,我认为前者更好。其他解决方案是使用
@ResponseStatus
@ExceptionHandler
。ResponseEntity工作的原因很明显,因为对象是我尝试过的所有事情的父类(返回新的ResponseEntity(entities,HttpStatus.OK);)但是控制器为我返回空数组。有什么建议吗