2017-06-07 1 views
1

Je dois mapper un json qui ressemblerait à ceci, c'est fondamentalement un objet, qui peut contenir le même objet encore comme un enfant, alors que l'on peut aussi contenir le même objet . Comment serais-je capable de mapper cela à java pojo?Mapper ce json à l'objet java (pojo)

C'est le JSON:

{ 
"group": [ 
      { 
       "name": "Beheerders", 
       "desc": "Beheerders", 
       "children" : [ 
        "group" : [ 
         { 
          "name": "Beheerders", 
          "desc": "Beheerders" 
         }, 
         { 
          "name": "Beheerders", 
          "desc": "Beheerders" 
         }, 
         { 
          "name": "Beheerders", 
          "desc": "Beheerders" 
          "children": [ 
           "group" : [ 
           { 
            "name": "Beheerders", 
            "desc": "Beheerders" 
           }, 
           { 
            "name": "Beheerders", 
            "desc": "Beheerders" 
           } 
         } 

      } 
     ] 
    } 

et moi avons ces 4 POJO de:

Group.java

 private String name; 
     private String desc; 
     private Children children; 

//getters & Setters & toString 

GroupList.java

private ArrayList<Group> group; 

    public void setGroup(ArrayList<Group> group) { 
     this.group = group; 
    } 

    public ArrayList<Group> getGroup() { 
     return this.group; 
    } 

Children.java

private ArrayList<ChildrenGroup> group; 

    public ArrayList<ChildrenGroup> getGroup() { 
     return this.group; 
    } 

    public void setGroup(ArrayList<ChildrenGroup> group) { 
     this.group = group; 
    } 

childrengroup.java

private String name; 
    private String desc; 
    private Children Children; 

//Getters & Setters & toString 

Cela ne fonctionne pas pour obtenir de moi, je toujours cette erreur:

com.fasterxml.jackson.databind.JsonMappingException: ne peut pas désérialiser instance de java .util.ArrayList sur le jeton START_OBJECT

+0

Votre JSON n'est pas valide et vos objets n'utilisent pas correctement l'objet par rapport à la liste. Veuillez valider votre exemple JSON. Vous pouvez également éventuellement supprimer Children and ChildrenGroup et simplement nicher GroupList insideGroup. '" children ": [" group ": [' est également invalide. –

+0

Retravaillé le json à un json valide et utilisé seulement les classes de groupe et de groupe et les choses fonctionnent maintenant! Merci beaucoup! si vous faites votre commentaire une réponse je pourrais marquer comme réponse – forgotteng

+0

heureux d'être utile. J'ai copié mon commentaire dans une réponse et j'ai essayé d'expliquer un peu plus aussi. –

Répondre

0

Votre JSON est pas valide et vos objets n'utilisent pas correctement l'objet par rapport à la liste. Veuillez valider votre exemple JSON. est invalide. Vos erreurs se produisent car il rencontre [ lorsque vos objets Java spécifient {.

Vous pouvez supprimer Children and ChildrenGroup et simplement imbriquer GroupList à l'intérieur du groupe.

0

Vous pouvez utiliser des outils en ligne tels que jsonschema2pojo pour générer des POJO à partir de votre fichier JSON.

Si je comprends bien, vous essayez de convertir smth comme les suivantes:

{ 
    "g":[ 
    { 
     "a":"1", 
     "c":"2" 
    }, 
    { 
     "a":"2", 
     "c":"3", 
     "d":[ 
     { 
      "g":[ 
      {"a":"3", 
      "c":"4"}, 
      {"a":"5", 
      "c":"6"} 
      ] 
     } 
     ] 
    } 
    ] 
} 

La sortie de celui-ci sera:

-----------------------------------com.example.D.java----------------------------------- 

package com.example; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class D { 

private List<G_> g = null; 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

public List<G_> getG() { 
return g; 
} 

public void setG(List<G_> g) { 
this.g = g; 
} 

public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.example.Example.java----------------------------------- 

package com.example; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class Example { 

private List<G> g = null; 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

public List<G> getG() { 
return g; 
} 

public void setG(List<G> g) { 
this.g = g; 
} 

public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.example.G.java----------------------------------- 

package com.example; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class G { 

private String a; 
private String c; 
private List<D> d = null; 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

public String getA() { 
return a; 
} 

public void setA(String a) { 
this.a = a; 
} 

public String getC() { 
return c; 
} 

public void setC(String c) { 
this.c = c; 
} 

public List<D> getD() { 
return d; 
} 

public void setD(List<D> d) { 
this.d = d; 
} 

public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.example.G_.java----------------------------------- 

package com.example; 

import java.util.HashMap; 
import java.util.Map; 

public class G_ { 

private String a; 
private String c; 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

public String getA() { 
return a; 
} 

public void setA(String a) { 
this.a = a; 
} 

public String getC() { 
return c; 
} 

public void setC(String c) { 
this.c = c; 
} 

public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
+0

Wow tnx beaucoup pour cet outil, super pratique et jamais entendu parler de tels outils! Cela va rendre ma vie plus facile – forgotteng