2017-01-08 3 views
0

Est-ce que ObjectMapper est supposé fonctionner avec une classe qui n'a que des membres privés, pas de constructeur et pas de getter/setters?Restrictions ObjectMapper

J'ai essayé ceci, mais cela ne résout pas le problème.

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

Une classe * toujours * a un constructeur. Voulez-vous dire qu'il a seulement le constructeur par défaut? – chrylis

+0

Copie possible de [comment spécifier jackson pour utiliser uniquement les champs - de préférence globalement] (http://stackoverflow.com/questions/7105745/how-to-specify-jackson-to-only-use-fields-preferably-globally) –

+0

@chrylis, oui c'est ce que je voulais dire. Merci d'avoir écrit – Andy897

Répondre

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

Merci beaucoup d'avoir écrit. Mais j'utilise org.codehaus.jackson.map.ObjectMapper, qui est une sorte d'ancienne version de com.fasterxml.jackson.core. Je ne vois pas une option pour définir PropertyAccessor dans une version antérieure. :(Pensées? – Andy897

+0

Et je n'ai aucune idée de qui a voté votre réponse – Andy897

+0

Mon exemple de code est pour Jackson 2.x. Jackson 1.x n'est plus maintenu.Il serait possible de changer? –