2012-08-16 3 views
6

Esiste un modo per non dover estrarre i tag necessari "manualmente" dal JSON se non si desidera deserializzare tutti in modo da poter utilizzare questo costruttore?Deserializzare solo determinati tag JSON con Jackson

public class Tweet { 
    public String username; 
    public String message; 
    public String image_url; 

    @JsonCreator 
    public Tweet(
      @JsonProperty("from_user")   String username, 
      @JsonProperty("text")    String message, 
      @JsonProperty("profile_image_url") String url) { 
     this.username = username; 
     this.message = message; 
     this.image_url = url; 
    } 
} 

E qui è il JSON:

{ 
     "created_at":"Wed, 15 Aug 2012 18:17:55 +0000", 
     "from_user":"felix_panda", 
     "from_user_id":132396774, 
     "from_user_id_str":"132396774", 
     "from_user_name":"felix suganda", 
     "geo":null, 
     "id":235802515571101696, 
     "id_str":"235802515571101696", 
     "iso_language_code":"en", 
     "metadata":{ 
      "result_type":"recent" 
     }, 
     "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2393214158\/profile_normal.jpg", 
     "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2393214158\/profile_normal.jpg", 
     "source":"<a href="http:\/\/www.tweetcaster.com" rel="nofollow">TweetCaster for Android<\/a>", 
     "text":"@Android how do u fix you lost your data connection because you left home network with data roaming (cont) http:\/\/t.co\/4coRjaXT", 
    "to_user":"Android", 
    "to_user_id":382267114, 
    "to_user_id_str":"382267114", 
    "to_user_name":"Android" 

Questo è l'errore che ottengo quando la deserializzazione è:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "created_at" 

risposta

1

Sto usando MongoJack. Ecco cosa ho fatto per risolverlo.

ObjectMapper mapper = new ObjectMapper().setVisibility(PropertyAccessor.FIELD, Visibility.ANY); 
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
    MongoJackModule.configure(mapper); 
    JacksonDBCollection<Message, Long> coll = JacksonDBCollection.wrap(dbCollection, Message.class, Long.class, mapper);