2016-08-06 3 views
0

Я после этого учебника: https://spring.io/guides/gs/consuming-rest/ Он потребляющий объект JSON, как этот:SpringBoot Потребляя переменную REST связывания

{ 
    type: "success", 
    value: { 
     id: 10, 
     quote: "Really loving Spring Boot, makes stand alone Spring apps easy." 
    } 
} 

У меня есть один вопрос. В Value.java, у нас есть две переменные:

private Long id; 
    private String quote; 

Мой вопрос, как же Spring знать, чтобы связать переменный идентификатор свойство идентификатора в JSON, и как она знает, чтобы связать переменные цитаты с цитатой собственности в формате JSON , Я попытался заставить оба String думать, что, возможно, Spring автоматически определяет тип данных переменной, а затем делает привязку, но это не изменило ситуацию. Я думал, может быть, если имена переменных такие же, как и свойство, вот как это делает привязка, поэтому я попытался изменить имена переменных, и это тоже не имело значения. Тогда я думал, что это может быть, порядок переменных, так что я переключился переменные поэтому он стал так:

private String quote; 
    private String id; 

Я сделал их как строки нарочно. Но все же каким-то образом свойство id привязывалось к свойству id и quote переменной переменной quote.

Так может кто-то сказать мне, как весна определяет, какое свойство связывается с какой переменной.

+0

Он должен идти по имени, сначала из методов getter/setter, затем по имени свойства; если вы изменили имена, но вы все равно получили значения во всех из них, вы, вероятно, не перестроили весь свой проект. –

+0

Я изменил все использование цитаты в quote1 и id на id1, затем снова закончил сборку, а затем запустил файл jar и все равно получил тот же результат – StephCurry3093

ответ

1

Так как это Джексон, поведение по умолчанию заключается в использовании соответствующих геттеров/сеттеров, поэтому мой снимок - это то, что вы изменили имя поля, но не имя получателя/сеттера.

+0

. Поэтому я изменил имя сеттера, которое не изменило ситуацию. Затем я сменил геттеров, это изменило ситуацию. Тогда он возвращал значение null. Ты знаешь почему? Почему изменение названия геттеров даже может иметь значение? – StephCurry3093

+0

Ну, я не уверен, так как я не использовал Джексона много. Вы должны ознакомиться с этой библиотечной документацией или, возможно, с этим (не уверен, что хорошо ответить на ваш вопрос): http://www.baeldung.com/jackson-field-serializable-deserializable-or-not Похоже, что (de) сериализация зависит от имени геттеров (насколько я знаю, вы можете изменить поведение Джексона по умолчанию) – mklimasz

Смежные вопросы