如何使用spring boot将json映射到对象[重复]

Posted

技术标签:

【中文标题】如何使用spring boot将json映射到对象[重复]【英文标题】:How to map json to object using spring boot [duplicate] 【发布时间】:2017-03-06 16:57:41 【问题描述】:

您好,我想知道在使用 spring boot 时如何将我的 json 消息映射到 java 中的对象。

假设我得到了类似的 json

 
    "customerId": 2,
    "firstName": "Jan",
    "lastName": "Nowak",
    "town": "Katowice"
  

我想在我的 java 程序中使它成为实体: 无论出于何种原因,我都不想匹配字段名称

public class Customer 


    //Something like @Map("customerId")
    private long OMG;
    //Something like @Map("firstName")
    private String WTF;
    //Something like @Map("lastName")
    private String LOL;
    //Something like @Map("town")
    private String YOLO;

我找不到应该使用什么注释,没有使用jackson,只是内置了spring boot转换器??

【问题讨论】:

Spring Boot 对依赖、粘合和默认配置进行分组。它不是序列化 API。您应该使用 Jackson 来满足您的需求 【参考方案1】:

Jackson 开箱即用的 Spring Boot。

您可以使用 @RequestBody Spring MVC 注释将 json 字符串解组为 Java 对象...类似这样。

@RestController
public class CustomerController 
    //@Autowired CustomerService customerService;

    @RequestMapping(path="/customers", method= RequestMethod.POST)
    @ResponseStatus(HttpStatus.CREATED)
    public Customer postCustomer(@RequestBody Customer customer)
        //return customerService.createCustomer(customer);
    

使用@JsonProperty 用相应的json 字段名称注释您的实体成员元素。

public class Customer 
    @JsonProperty("customerId")
    private long OMG;
    @JsonProperty("firstName")
    private String WTF;
    @JsonProperty("lastName")
    private String LOL;
    @JsonProperty("town")
    private String YOLO;

【讨论】:

【参考方案2】:

Spring Boot 对依赖、粘合和默认配置进行分组。它不是序列化 API。您应该使用 Jackson 来满足您的需求

你应该映射你的类,例如:

public class Customer 

  @JsonProperty("customerId")
  private long OMG;
  @JsonProperty("firstName")
  private String WTF;
  @JsonProperty("lastName")
  private String LOL;
  @JsonProperty("town")
  private String YOLO;  
   ....

来自 JsonProperty 注解 Javadoc:

可用于将非静态方法定义为 逻辑属性的“setter”或“getter”(取决于它的 签名),或要使用的非静态对象字段(序列化, 反序列化)作为逻辑属性。

默认值(“”)表示使用字段名作为 属性名称没有任何修改,但可以指定为 非空值指定不同的名称。属性名称指 外部使用的名称,作为 JSON 对象中的字段名称。

【讨论】:

以上是关于如何使用spring boot将json映射到对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中将嵌套的 JSON 对象映射为 SQL 表行

Spring Boot 嵌套动态 json 请求映射到 pojo

Spring Boot 前端请求参数自动映射到枚举,后端响应JSON数据自动解析枚举

将 YAML 列表映射到 Spring Boot 中的对象列表

如何发送纯 JSON 对象(位于模型对象内)以在 Spring Boot 中查看?

Spring Boot Kotlin 暴露存储过程