filemonczyk filemonczyk - 1 month ago 23
Java Question

How to map json to object using spring boot

Hello I'd like to know how I could mapp my json message to object in java when using spring boot.

Let's say I'm getting json like

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


and I'd like to make it entity in my java program:
and for whatever reason I dont want to have match on field names

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;


I cannot find what annotation I should use, Not using jackson, just built in spring boot converter??

Answer

Spring boot comes with Jackson out-of-the-box.

You can use @RequestBody Spring MVC annotation to un-marshall json string to Java object... something like this.

@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);
    }
}

Annotate your entities member elements with @JsonProperty with corresponding json field names.

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