rest - 默认 JSON 到对象映射不起作用

标签 rest spring-mvc

我想执行 JSON 消息的 POST 并希望转换为 Employee 对象。 JSON 消息为 {"employee":{"id":2231,"name":"jeffarry2231","niNumber":"SN10KTL"}}

员工对象

public class Employee {
    private Long id;
    private String name;
    private String niNumber;
    ...
}

员工 Controller

@Controller
public class EmployeeController {

   @RequestMapping(value = "/employee/add/", method = RequestMethod.POST)
    public void addEmployee(Employee employee){
       System.out.println(employee.getName());
    }
}

发布请求的 RestTemplate 是

@Test
public void postMethod() {
    RestTemplate restTemplate = new RestTemplate();
    String jsonEmployee = "{'id':2231,'name':'jeffarry2231','niNumber':'SN10KTL'}}";

    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(newArrayList(MediaType.APPLICATION_JSON));
    HttpEntity<String> requestEntity = new HttpEntity<String>(jsonEmployee, headers);
    restTemplate.exchange("http://localhost:8080/employee/add/", POST, requestEntity, String.class);
}

applicationContext.xml 有

<mvc:annotation-driven/>

我期望默认情况下使用 MappingJacksonHttpMessageConverter 但它似乎没有转换,不确定我在这里缺少什么!

最佳答案

尝试添加@RequestBody注释:

@RequestMapping(value = "/employee/add/", method = RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
   System.out.println(employee.getName());
}

关于rest - 默认 JSON 到对象映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406362/

相关文章:

android - 带过滤器的环回android sdk REST api

c# - Windows注销后如何继续运行C#应用程序

java - REST api 的类级 validator 甚至不执行 validator

java - spring MVC helloworld 应用程序显示 CannotLoadBeanClassException

java - 无法反序列化 Spring Session Scoped bean

java - 在 java Spring Rest 服务中下载并读取大型 csv 文件

java - jax-rs Rest服务调用属性文件

spring - @RequestHeader 请求参数和值所需的属性行为

java - 如何在不同方法调用之间维护内存中的对象列表?

spring - 如何在 Spring MVC 测试中设置 Web 应用程序上下文