Jackson ObjectMapper - свойства с "_" не отображаются - PullRequest
1 голос
/ 15 марта 2012

Я использую ObjectMapper в следующей ситуации, однако класс Person имеет свойство JSON "last_name", которое, похоже, не отображается, когда свойство "name" отображается нормально.Я включил мой класс Person ниже.Любые причины, по которым это может происходить, приветствуются.Используется ядро ​​Джексона / картограф 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; }

}

1 Ответ

6 голосов
/ 16 марта 2012

спецификация Java Bean определяет ожидаемые отображения; и поэтому наличие метода getLastName() означает, что будет отображено только точное свойство "lastName".

Чтобы отобразить "фамилию", у вас есть несколько вариантов:

  • используйте @JsonProperty("last_name") рядом с методом get для переименования используемого свойства JSON
  • используйте PropertyNamingStrategy (например, PropertyNamingStrategy. LowerCaseWithUnderscoresStrategy), зарегистрированный в "ObjectMapper.setNamingStrategy ()", чтобы изменить то, как свойства Бина отображают имена JSON

Последний метод имеет смысл, если все ваши данные поступают с использованием соглашения об именах, отличающегося от соглашения об именах Java Bean (случай верблюда). Бывший лучше для одноразовых изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...