2011-12-29 165 views
2

多个对象在此刻,我可以正确地分析JSON是这样的:解析与GSON

"assignments:[{" 
    + "'id': '111'," 
    + "'erporder_erpid' : '132'," 
    + "'dtStart' : '10:00 12-12-12'," 
+ "}]"; 

与GSON。但我不知道解析多个对象的适当方式,如:

"assignments:[{" 
    + "'id': '111'," 
    + "'erporder_erpid' : '132'," 
    + "'dtStart' : '10:00 12-12-12'," 
+ "}," 
+ "{" 
    + "'id': '111'," 
    + "'erporder_erpid' : '132'," 
    + "'dtStart' : '10:00 12-12-12'," 
+ "}]" 

我有一个正确设置的Javabean。

回答

2
{ 
"assignments:[{" 
     + "'id': '111'," 
     + "'erporder_erpid' : '132'," 
     + "'dtStart' : '10:00 12-12-12'," 
    + "}," 
    + "{" 
     + "'id': '111'," 
     + "'erporder_erpid' : '132'," 
     + "'dtStart' : '10:00 12-12-12'," 
    + "}]" 
} 

Objectclass.java

public class takeData { 
public List<assignmentsData> assignments; 


    public List<assignmentsData> getAssignments() { 
     return assignments; 
    } 

    public void setAssignments(List<assignmentsData> assignments) { 
     this.assignments = assignments; 
    } 
} 

assignmentsData.java

public class assignmentsData { 
    public String id=""; 
    public String erporder_erpid=""; 
    public String dtStart=""; 


    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getErporder_erpid() { 
     return erporder_erpid; 
    } 

    public void setErporder_erpid(String erporder_erpid) { 
     this.erporder_erpid = erporder_erpid; 
    } 

    public String getDtStart() { 
     return dtStart; 
    } 

    public void setDtStart(String dtStart) { 
     this.dtStart = dtStart; 
    } 
} 

parsingClass.java

Gson mGson= new Gson(); 
Objectclass mObjectclass=gson.fromJson(jsonString, Objectclass.class); 

访问:mObjectclass.getAssignments.get(0).getId ( );

+0

谢谢你的回答!但是它绝对拒绝从对象类中获取Assignments。 getAssignments无法解析,因为它在Objectclass中被明确声明,所以很奇怪。 – MaikelS 2011-12-29 12:20:30

+0

清理项目,并在公共 – 2011-12-29 12:25:35

+0

还追加“{”“}”在您的JSON字符串额外的括号 – 2011-12-29 12:26:13

3

您可以使用以下方法:

JSONArray outerArr = new JSONArray("assignments"); 
for(int ictr=0;ictr<outerArr.length;ictr++) 
{ 
     JSONObject obj =outerArr.getJSONObject(ictr); 
     String id=obj.getString("id"); 
     String erporder_erpid=obj.getString("erporder_erpid"); 
     String dtStart=obj.getString("dtStart"); 
} 

希望这可以帮助你。

+1

+1一个确切的答案。 – 2011-12-29 11:31:35

+0

@MaikelS为什么不使用和内置功能,而是使用外部库来解析JSON。 – 2011-12-29 11:37:00

+0

我想使用GSON,它要简单得多。事实上,我没有三个字符串,但数百个字符串。我用这个例子来简化我的问题。而且说实话:你不能击败这样的: 分配数据=新GSON()fromJson(JSON,Assignment.class); – MaikelS 2011-12-29 11:38:54