Как сопоставить json объекту с помощью весенней загрузки
Здравствуйте, я хотел бы знать, как я могу сопоставить свое сообщение 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;
Я не могу найти, какую аннотацию я должен использовать, Не используя Джексона, только встроенный конвертер весенней загрузки??
2 ответа
Весенняя загрузка идет с Джексоном из коробки.
Вы можете использовать аннотацию @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; }
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:
Аннотация маркера, которая может использоваться для определения нестатического метода в качестве "установщика" или "получателя" для логического свойства (в зависимости от его сигнатуры) или поля нестатического объекта, которое будет использоваться (сериализовано, десериализовано) в качестве логического имущество.
Значение по умолчанию ("") указывает, что имя поля используется в качестве имени свойства без каких-либо изменений, но его можно указать непустым значением, чтобы указать другое имя. Имя свойства относится к имени, используемому извне, как имя поля в объектах JSON.