Java 如何使用spring和Hibernate生成使用json对象的json响应

Java 如何使用spring和Hibernate生成使用json对象的json响应,java,json,spring,hibernate,spring-mvc,Java,Json,Spring,Hibernate,Spring Mvc,我得到415个错误。 这是我用来获取json响应的映射 @RequestMapping(value="/details", method= RequestMethod.POST , consumes= MediaType.APPLICATION_JSON_VALUE , produces= MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<UserDetails> addUserDetail

我得到415个错误。 这是我用来获取json响应的映射

@RequestMapping(value="/details", method= RequestMethod.POST ,
        consumes= MediaType.APPLICATION_JSON_VALUE ,
        produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<UserDetails> addUserDetails(@RequestBody 
                RegisterInput registerInput)throws ValidationException{

    if(registerInput==null || registerInput.getUserName()==null){
                throw new ValidationException("Input is not valid");
    }
    UserDetails userDetails=new UserDetails(registerInput.getUserName(),
                    registerInput.getFirstName(), registerInput.getLastName(), registerInput.getPassword());
    userDetailsService.addUserDetails(userDetails);
    return new ResponseEntity<UserDetails>(userDetails, HttpStatus.OK);
}
@RequestMapping(value=“/details”,method=RequestMethod.POST,
consumes=MediaType.APPLICATION\u JSON\u值,
products=MediaType.APPLICATION\u JSON\u值)
public ResponseEntity addUserDetails(@RequestBody
RegisterInput(RegisterInput)抛出ValidationException{
if(registerInput==null | | registerInput.getUserName()==null){
抛出新的ValidationException(“输入无效”);
}
UserDetails UserDetails=新的UserDetails(registerInput.getUserName(),
registerInput.getFirstName()、registerInput.getLastName()、registerInput.getPassword());
userDetailsService.addUserDetails(userDetails);
返回新的响应属性(userDetails,HttpStatus.OK);
}
pom.xml

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.4.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.4</version>
</dependency>

org.codehaus.jackson
杰克逊地图绘制者
1.9.13
org.codehaus.jackson
jackson core asl
1.9.13
com.fasterxml.jackson.core
杰克逊注释
2.4.4
com.fasterxml.jackson.core
杰克逊核心
2.4.4
com.fasterxml.jackson.core
杰克逊数据绑定
2.4.4
请帮助我如何获取json响应,因为在我的示例中,它显示错误415。 提前谢谢


其中UserDetails是POJO类,RegisterInput存储输入并返回json对象。以下是我的pom。

您可以重构方法,通过
@ResponseBody

   @RequestMapping(value="/details", method= RequestMethod.POST ,
            consumes= MediaType.APPLICATION_JSON_VALUE ,
            produces= MediaType.APPLICATION_JSON_VALUE)
   @ResponseBody public UserDetails addUserDetails(@RequestBody 
                                        RegisterInput registerInput)throws ValidationException{

        if(registerInput==null || registerInput.getUserName()==null){
           throw new ValidationException("Input is not valid");
         }
         UserDetails userDetails=new userDetails(registerInput.getUserName(),
                        registerInput.getFirstName(), registerInput.getLastName(), registerInput.getPassword());
          userDetailsService.addUserDetails(userDetails);
          return userDetails;
   }
还要注意,只有在使用Spring4时,才需要jackson 2.x依赖项


jackson 1.9.x仅当您使用Spring 3.x.x时,才可以对控制器进行注释(而不是使用经典的
@controller

这样,您告诉Spring使用返回的对象作为响应的主体


确保使用
application/json
发送
Accept
Content-Type
标题,并且发送的json格式正确

您需要使您的url中的post数据为json。我怀疑你发布的数据是错误的。使用@Controller和@ResponseBody也是一个很好的示例springrest,您可以通过设置返回JSON作为响应

反应性

作为控制器类中方法的返回类型。您还可以通过创建Map添加额外的json键值对让我们看看下面的示例

@DeleteMapping("/delete/{id}")
public ResponseEntity<Object> deleteDepartment(@PathVariable Long id) throws NotFoundException {


    Optional<Department> department = this.departmentService.findADepartment(id);
    if (department == null)
        return ResponseEntity.status(HttpStatus.NOT_FOUND).build();

    Map<String, String> stringStringMap = new HashMap<>();
    if (departmentService.deleteADepartment(id)) {
        stringStringMap.put("status", "success");
        stringStringMap.put("message", "successfully deleted");
        stringStringMap.put("code", "200");
        return ResponseEntity.status(HttpStatus.OK).
                body(stringStringMap);

    } else {
        stringStringMap.put("status", "failed");
        stringStringMap.put("message", "not  deleted");
        stringStringMap.put("code", "404");
        return ResponseEntity.status(HttpStatus.NOT_FOUND).
                body(stringStringMap);

    }

}

它仍然抛出相同的错误。错误415,媒体unsupported@Dilpreet您是否使用application/json发送Accept头文件?我使用的是Hibernate,需要从数据库中访问数据。所以我想动态使用存储在数据库中的json对象你仍然可以这样做,示例只是演示,但你可以看到在该站点上使用hibernate将对象存储到数据库的其他示例发布bean的代码,有两个常见的因素阻碍转换,缺少或错误的依赖项,或者说是坏波乔,在某种意义上说是埃罗纽斯的接球手和二传手
{
"code": "200",
"message": "successfully deleted",
"status": "success"
}