Я использую ObjectMapper в следующей ситуации, однако класс Person имеет свойство JSON "last_name", которое, похоже, не отображается, когда свойство "name" отображается правильно. Я включил свой класс Person ниже. Любые причины, почему это может произойти, оцениваются. Используется Jackson core/mapper 1.8.5.
ObjectNode node = (ObjectNode) row.getDocAsNode();
try {
Person person = mapper.readValue(node, Person.class);
tt.setText(person.getName());
bt.setText(person.getLastName());
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Класс личности:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
private String _name;
private String _last_name;
public String getName() { return _name; }
public String getLastName() { return _last_name; }
public void setName(String str) { _name = str; }
public void setLastName(String str) { _last_name = str; }
}
Спецификация Java Bean определяет ожидаемые сопоставления; и поэтому наличие метода getLastName()
означает, что будет отображаться только точное свойство "lastName".
Чтобы отобразить "last_name", у вас есть несколько вариантов:
@JsonProperty("last_name")
чтобы получить метод для переименования свойства JSONPropertyNamingStrategy
(например, PropertyNamingStrategy. LowerCaseWithUnderscoresStrategy
), зарегистрированный в ObjectMapper.setNamingStrategy(), чтобы изменить, как свойства Bean отображают имена JSONМетод Latter имеет смысл, если все ваши данные поступают с использованием соглашения об именах, отличного от соглашения об именах Java Bean (случай верблюда). Бывший лучше для одноразовых изменений.