簡體   English   中英

使用GSON將JSON嵌套到Java對象

[英]Nested JSON to Java Object mapping using GSON

您好,我被困在使用GSON實驗室將JSON NESTED數組轉換為JAVA對象的過程中。

這是我的JSON字符串

[{\"name\":\"3214657890RootSAPSSE\",\"children\":[{\"name\":\"672BENIAMEEN .Sales Base Market SectionCustomer Representative\"},{\"name\":\"672BENIAMEEN .Sales Base Market SectionPeão\"}]}] 

我使用x="[{\\"name\\":\\"MyNode\\"}]";測試了我的代碼x="[{\\"name\\":\\"MyNode\\"}]"; 為此,我的java代碼是

Gson gson = new Gson(); 
java.lang.reflect.Type type = new TypeToken<List<EmployeeJSONObj>>(){}.getType();
List<EmployeeJSONObj>l = gson.fromJson(x, type);
System.out.println("hello "+l.get(0).getName());

AND EmployeeJSONObj是類

public class EmployeeJSONObj {
    private String name;
    EmployeeJSONObj()
    {

    }
    public String getName()
    {
        return name;
    }

}

一切正常。 但是當我將JSON String更改為

[{\"name\":\"3214657890RootSAPSSE\",\"children\":[{\"name\":\"672BENIAMEEN .Sales Base Market SectionCustomer Representative\"},{\"name\":\"672BENIAMEEN .Sales Base Market SectionPeão\"}]}] 

這是一棵樹。 我想要通用的解決方案,它可以遍歷整個嵌套的json字符串。 我被困在一個項目的中間。 請幫我解決這個問題。

謝謝

您需要一個班級中的孩子List ,以便Gson可以反序列化children數組。 這是一個工作示例。

public static void main(String args[]) {
    String str = "[{\"name\":\"3214657890RootSAPSSE\",\"children\":[{\"name\":\"672BENIAMEEN .Sales Base Market SectionCustomer Representative\"},{\"name\":\"672BENIAMEEN .Sales Base Market SectionPeão\"}]}]";
    System.out.println(str);

    Gson gson = new Gson(); 
    java.lang.reflect.Type type = new TypeToken<List<EmployeeJSONObj>>(){}.getType();
    List<EmployeeJSONObj>l = gson.fromJson(str, type);
    System.out.println(l);
}
public static  class EmployeeJSONObj {
    private String name;
    private List<EmployeeJSONObj> children = new LinkedList<>();
    EmployeeJSONObj()
    {

    }
    public String getName()
    {
        return name;
    }

    public String toString() {
        return "name: " + name + ", children = " + children;
    }

}

版畫

[{"name":"3214657890RootSAPSSE","children":[{"name":"672BENIAMEEN .Sales Base Market SectionCustomer Representative"},{"name":"672BENIAMEEN .Sales Base Market SectionPeão"}]}]
[name: 3214657890RootSAPSSE, children = [name: 672BENIAMEEN .Sales Base Market SectionCustomer Representative, children = [], name: 672BENIAMEEN .Sales Base Market SectionPeão, children = []]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM