2017-03-16 3 views
0

J'ai un scénario de données, où je veux remplir un attribut de ma classe POJO en utilisant l'attribut d'un objet imbriqué. Le ci-dessous est juste un exemple, mais j'ai beaucoup de ces variables imbriquées.Conversion de JSON en POJO avec Jackson & JsonPath

Par exemple ma classe java est le suivant

public class Book{ 
    private String title; 
    private String author; 
    private String isbn; 
    ...  
} 

Et ma réponse JSON que je dois Désérialise que suivre

{ 
    "title":"the jungle book", 
    "author":"Rudyard Kipling", 
    "code":{ 
     "isbn":"1616416920" 
     } 
} 

donc l'attribut isbn dans ma classe java, besoins être rempli en utilisant le champ imbriqué isbn à l'intérieur de l'objet code.

J'ai essayé d'utiliser le @JsonProperty comme suivre

@JsonProperty(value="code.isbn") 
private String isbn; 

Mais encore défini l'attribut isbn null dans ma classe java POJO. Quelqu'un peut-il suggérer comment je peux le faire.

En vous remerciant d'avance.

+0

est là une certaine régularité ou de cohérence dans la structure JSON? sont les propriétés imbriquées sous '" code "'? –

+0

Dans mon scénario actuel, que je ne peux pas partager en raison de PHI, il y a plusieurs attributs de ce type qui sont à différents niveaux. Créer et instancier autant de classes que je ne peux pas utiliser entraînera un gaspillage de mémoire, par conséquent j'essaie de trouver un moyen, où je peux tirer de tels attributs imbriqués dans mon objet POJO en utilisant JsonPath. Je préférais si je pouvais utiliser la classe ObjectMapper pour analyser mon JSOn en POJO et utiliser JsonPath d'une manière ou d'une autre pour extraire les attributs imbriqués (comme isbn dans l'exemple que j'ai partagé ci-dessus) – nishiz

Répondre

0

Vous pouvez écrire du code personnalisé pour analyser le fichier json afin de créer un objet Book dont la valeur isbn est définie en analysant l'objet imbriqué.

ou

pour le JSON donné, vous devez définir un objet dit "Code"

public class Book { 
    @JsonProperty(value="title") 
    private String title; 

    @JsonProperty(value="author") 
    private String author; 

    @JsonProperty(value="code") 
    private Code code; 
} 

public class Code { 
    @JsonProperty(value="isbn") 
    public String isbn; 
}