2012-08-16 15 views
6

¿Hay alguna forma de que no tenga que extraer las etiquetas que necesito "manualmente" de JSON si no quiero deserializarlas para que pueda usar este constructor?Deserializar solo ciertas etiquetas 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; 
    } 
} 

Y aquí está el 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" 

Este es el error que consigo al deserializar que:

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

Respuesta

1

Estoy usando MongoJack. Esto es lo que hice para resolverlo.

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); 
Cuestiones relacionadas