如何使用spring boot

时间:2016-10-24 19:55:58

标签: java json spring spring-boot jackson

您好我想知道如何在使用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 converter中?

2 个答案:

答案 0 :(得分:5)

弹簧启动带有杰克逊开箱即用。

您可以使用@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;
}

答案 1 :(得分:2)

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

你应该映射你的课程,例如:

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:

  

标记注释,可用于将非静态方法定义为   "设定器"或者" getter"对于逻辑属性(取决于它   签名),或要使用的非静态对象字段(序列化,   反序列化)作为逻辑属性。

     

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