Как сопоставить 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.

Другие вопросы по тегам