2017-06-07 4 views
1

私はこのように見えるjsonをマップする必要があります。これは基本的にオブジェクトです。同じオブジェクトを子として再び含むことができ、次に同じオブジェクトを再び含むことができます。これをJavaのpojoにどのようにマップできますか? このjsonをjavaオブジェクト(pojo)にマッピング

この

は、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" 
           } 
         } 

      } 
     ] 
    } 

と私は持っているこれら4 POJOの:

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 

これは私のために働いていない、私はいつもこのエラーを取得:

com.fasterxml.jackson.databind.JsonMappingExceptionは:Javaのインスタンスをデシリアライズすることはできません.util.ArrayList from START_OBJECTトークン

+0

JSONが無効で、オブジェクトがオブジェクトとリストを正しく使用していません。 JSONの例を検証してください。おそらくChildrenとChildrenGroupを削除し、GroupList insideGroup内にネストすることもできます。 '" children ":[" group ":['は無効です。 –

+0

jsonを有効なjsonにリワークし、グループとグループリストのクラスのみを使用しています。たくさんのTnx!あなたがあなたのコメントを回答するなら、私はそれを回答としてマークすることができます – forgotteng

+0

助けになるのはうれしいです。私は答えに自分のコメントをコピーし、もう少し説明しようとしました。 –

答えて

0

あなたのJSONが有効でないと、あなたのオブジェクトオブジェクト対リストを正しく使用していません。 JSONの例を検証してください。 "children" : [ "group" : [は無効です。

Javaオブジェクトで{が指定されているときに、[が発生するため、エラーが発生しています。

ChildrenおよびChildrenGroupを削除し、グループ内のGroupListだけをネストすることもできます。

0

jsonschema2pojoのようなオンラインツールを使用して、JSONからPOJOを生成できます。

私はあなたが以下のようになめらかに変換しようとしている正しく理解していた場合:

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

この1の出力は次のようになります。

-----------------------------------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

すごい、そのツールのためにたくさんの、便利なスーパーとそのようなツールを聞いたことがない!これは私の人生を楽にする – forgotteng

関連する問題