2013-10-28 101 views
0

我將在下面的格式recieving JSON字符串:GSON解析反對

{ "type":"groups", "groups":[ {"group":"NAME"}, ...] } 

一個人怎麼會形成一個對象,以便下面會工作。

MyClass p = gson.fromJson(jsonString, MyClass.class); 

我被卡住的部分是「{」group「:」NAME「}」。這將通過保存數組內的對象來解決嗎?例。

public class MyClass { 

    private String type; 
    private List<MyOtherClass> groups = new ArrayList<MyOtherClass>(); 

    //getter and setter methods 

} 

答案:將對象嵌套在一起doh!謝謝你們!晶瑩剔透的現在:d

public class MyOtherClass { 
    private String group; 

    public String getGroup() { 
     return group; 
    } 

    public void setGroup(String group) { 
     this.group = group; 
    } 

    @Override 
    public String toString() { 
     return "group: "+group; 
    } 
} 

回答

2

首先,你需要爲組POJO:

public class MyOtherClass { 

    @Expose 
    private String group; 

    public String getGroup() { 
     return group; 
    } 

    public void setGroup(String group) { 
     this.group = group; 
    } 

}

接下來,您需要一個對你的 'MyClass的',這將是這樣的:

public class MyClass { 

    @Expose 
    private String type; 

    @Expose 
    private List<MyOtherClass> groups = new ArrayList<MyOtherClass>(); 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public List<Group> getGroups() { 
     return groups; 
    } 

    public void setGroups(List<Group> groups) { 
     this.groups = groups; 
    } 

} 

希望這會有所幫助。

+0

需要注意的是OP的'MyClass'使用「MyOtherClass」對象列表中,您創建了一個「Group」對象。遵守OP的命名方案可能會更清楚。 – dimo414

+0

@ dimo414 true!他確實給了我一個清晰的視圖,看看它是如何工作的:D –

+0

@ dimo414非常感謝您的反饋,我相應地更新了我的答案。 – k2col

1

乍一看,這看起來很好,假設MyOtherClass有一個字段叫做group,它包含一個字符串。 「我卡住的部分」是什麼意思?也許你可以發佈你看到的堆棧跟蹤,更廣泛地描述你想要做什麼,或者最好的是SSCCE

當使用GSON時,我覺得最容易實現我需要的類結構,然後讓GSON從中生成JSON數據。你當然可以採用另一種方式(基於JSON數據的設計類結構),但是如果你不明白GSON試圖做什麼,我認爲這會更加混亂。

一些pseduo代碼:

Class MyClass 
    String type 
    List<MyOtherClass> groups 

Class MyOtherClass 
    String group 

望着這一點,我們不難看出,將持有我們的序列化對象將看起來像這樣JSON:

{ 
    type: "...", 
    groups: [ 
    { group: "..." }, 
    ... 
    ] 
} 
+0

我沒有提供線索如何修復陣列,謝謝!在MyOtherClass中的私人字符串組訣竅:D –