Java 如何使用spring和Hibernate生成使用json对象的json响应
我得到415个错误。 这是我用来获取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
@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"
}