2017-01-08 2 views
0

Предполагается, что ObjectMapper работает с классом, который имеет только частные члены, без конструктора и без геттеров/сеттеров?Ограничения ObjectMapper

Я пробовал это, но это не решает проблему.

mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY); 
+0

Класс * всегда * имеет конструктор. Вы имеете в виду, что он имеет только конструктор по умолчанию? – chrylis

+0

Возможный дубликат [как указать джексон только для использования полей - желательно по всему миру) (http://stackoverflow.com/questions/7105745/how-to-specify-jackson-to-only-use-fields-preferably-globally) –

+0

@chrylis, да, вот что я имел в виду. Спасибо за письмо – Andy897

ответ

0

http://www.baeldung.com/jackson-field-serializable-deserializable-or-not

static class MyDtoAccessLevel { 
    private String stringValue = "hidden"; 
} 

public static void main(String[] args) throws JsonProcessingException { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); 
    MyDtoAccessLevel dtoObject = new MyDtoAccessLevel(); 
    System.out.println(mapper.writeValueAsString(dtoObject)); 
    //prints {"stringValue":"hidden"} 
} 
+0

Большое спасибо за письмо. Но я использую org.codehaus.jackson.map.ObjectMapper, который является старой версией com.fasterxml.jackson.core. Я не вижу возможности установить PropertyAccessor в старой версии. :(Мысли? – Andy897

+0

И у меня нет никаких указаний относительно того, кто проголосовал за ваш ответ. – Andy897

+0

Мой образец кода для Jackson 2.x. Jackson 1.x больше не поддерживается. Можно ли переключиться? –

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