2017-01-02 1 views
0

Classes POJO converties en JSON à l'aide de Jackson.Comment puis-je modifier le format de JSON

String jsonInString = mapper.writeValueAsString(Table 1); 

J'ai JSON comme ci-dessous

{ 

    "id": #, 
    "name":"name", 
    "Table 2":[ 
     { 
      "id": #, 
      "name":"name", 
      "Table 3":[ 
       { 
        "id": #, 
        "name":"name" 
       } 
      ], 
      "Table 4":[ 
       { 
        "id": #, 
        "name":"name" 
       } 
      ] 
     }, 
     { 
      "id": #, 
      "name":"name" 
     } 
    ] 
} 

Mais je veux JSON comme

{ 

    "TableName":"Table 1" 
    "id": #, 
    "name":"name", 
    "children":[ 
     { 
      "TableName":"Table 2" 
      "id": #, 
      "name":"name", 
      "children":[ 
       { 
        "TableName":"Table 3" 
        "id": #, 
        "name":"name" 
       }, 
       { 
        "TableName":"Table 4" 
        "id": #, 
        "name":"name" 
       } 
      ] 
     }, 
     { 
      "TableName":"Table 2" 
      "id": #, 
      "name":"name" 
     } 
    ] 
} 

Comment puis-je modifier le format de JSON comme ça? Merci à l'avance ..

Ma structure de classe POJO est comme

Table 1.java 
@JsonProperty("children") 
private Set<Table2> Table2 = new HashSet<Table2>(0); 

Table 2.java 
@JsonProperty("children") 
private Set<Table1> Table1 = new HashSet<Table1>(0); 
//@JsonProperty("children") 
private Set<Table3> Table3 = new HashSet<Table3>(0); 
//@JsonProperty("children") 
private Set<Table4> Table4 = new HashSet<Table4>(0); 

Table 3.java 
@JsonProperty("children") 
private Set<Table2> Table2 = new HashSet<Table2>(0); 

Table 4.java 
@JsonProperty("children") 
private Set<Table2> Table2 = new HashSet<Table2>(0); 

Dans le tableau 2.java, je veux Table3 & Table4 sous enfants. Mais je ne peux pas utiliser @JsonProperty ("enfants") à la fois Table3 & Table4, ils seront conflit entre les noms.

"children":[ 
       { 
        "TableName":"Table 3" 
        "id": #, 
        "name":"name" 
       }, 
       { 
        "TableName":"Table 4" 
        "id": #, 
        "name":"name" 
       } 
      ] 

Comment créer une classe POJO Table 2.java ici?

+1

Pouvez-vous également partager le fichier pojo. Le json dépendra toujours de la structure de l'objet. Vous ne pouvez pas simplement changer le json –

+0

cela peut vous aider http://www.jsonschema2pojo.org/ –

Répondre

0

Créer POJO droit résoudrait votre problème. Vous pouvez créer un POJO comme indiqué ci-dessous.

Class Table{ 
    String tableName; 
    Long id; 
    String name; 
    List<Table> childrens; 
} 
+0

Dans le tableau 2.java, je veux Table3 & Table4 sous Enfants. Mais je ne peux pas utiliser @JsonProperty ("enfants") à la fois pour Table3 et Table4, ils seront conflit entre les noms. Comment devons-nous créer la classe POJO Table 2.java ici? – user3086350