2017-02-01 2 views
1

Je suis en train de cartographier la réponse suivante:Carte enveloppé dans une réponse POJO

{ 
    "data": { 
     "id": "1574083", 
     "username": "snoopdogg", 
     "full_name": "Snoop Dogg", 
     "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg", 
     "bio": "This is my bio", 
     "website": "http://snoopdogg.com", 
     "counts": { 
      "media": 1320, 
      "follows": 420, 
      "followed_by": 3410 
     } 
} 

dans un objet où je veux seulement récupérer le nom d'utilisateur, FULL_NAME, et les champs d'identification.

Ex: quelque chose comme:

public class User{ 
    String id; 
    String username; 
    String full_name; 

    // getters + setters 

} 

Est-il possible de le faire sans avoir à stocker l'objet de données dans une carte?

+0

Qu'est-ce qui ne va pas en mappant l'intégralité de 'json' sur l'objet et en obtenant les champs nécessaires? – Arpit

Répondre

2

utiliser l'API Jackson. Il devrait être simple:

ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(jsonString, User.class); //jsonString is your actual json string. 

Vous voudrez peut-être modifier votre classe User pour correspondre à la chaîne JSON. Par exemple. votre classe d'utilisateur doit avoir un champ 'data' comme List<Data> data; où 'Data' est un autre POJO. Vous pouvez ajouter les champs "id", "userName", etc dans le fichier "Data".

+1

En outre, la bibliothèque Jackson vous donnera également des mappeurs d'objets comme pour XML et CSV, si ce sont des choses dont vous pourriez avoir besoin. –

+1

Super, merci VHS - qui a fait l'affaire. – Dayna

0

Vous pouvez le faire manuellement via, par exemple, ou utiliser une expression rationnelle des bibliothèques JSON comme Jackson, GSON etc.

0

Avec GSON, c'est plutôt simple. Supposons que votre json est stocké dans une variable String jsonString.

Gson gson = new Gson(); 
YourObject = gson.fromJson(jsonString, YourObject.class); 

Bien que je ne suis pas sûr de ce qui va se passer, puisque votre jsonString n'a pas une clé appelée User. Cependant, cela devrait fonctionner si vous extrayez d'abord data de votre jsonString et nommez votre POJO Data.