2014-03-12 30 views
0

我有這個字符串我使用API​​的測試,其中:如何從字符串中聲明覆合java JSON對象?

{"limit":30, "offset":"0", "filters": [{"property":"vlc.vlc","operator":"=","value":"DEKU113829"}]} 

我想使用創建的Android應用程序處理JSON對象:

JSONObject json = new JSONObject();   
json.put("limit", 30); 
json.put("offset", "0"); 

但我不知道如何使用put方法創建「過濾器」部分...

什麼是正確和最有效的解決方案?

回答

2

JSONObject/JSONArray支持「builder-esque」模式,並且put可以鏈接 - 它將返回相同(但已修改)的對象。

JSONObject json = 
    new JSONObject() 
    .put("limit", 30) 
    .put("offset", "0") /* but should be 0? */ 
    .put("filters", 
     new JSONArray() 
     .put(new JSONObject() 
      .put("property", "vlc.vlc") 
      .put("operator", "=") 
      .put("value", "DEKU113829") 
     ) 
    ); 

或者,尋找到一個POJO映射像Gson,這我會建議整體的易用性和一致性。

0

嘗試......

JSONObject json = new JSONObject();   
json.put("limit", 30); 
json.put("offset", "0"); 

JSONArray js_array = new JSONArray(); 

JSONObject json_obj = new JSONObject();   
json_obj.put("property", "vlc.vlc"); 
json_obj.put("operator", "="); 
json_obj.put("value", "DEKU113829"); 

js_array.put(json_obj); 

json.put("filters",js_array); 
0

使用GSON庫。對於JSON模型對象將是

public class MainModel 
    { 
     private int limit ; 
     public int getlimit() 
     { 
       return this.limit; 
     } 
     public void setlimit(int limit) 
     { 
       this.limit = limit; 
     } 
     private String offset ; 
     public String getoffset() 
     { 
       return this.offset; 
     } 
     public void setoffset(String offset) 
     { 
       this.offset = offset; 
     } 
     private ArrayList<Filter> filters ; 
     public ArrayList<Filter> getfilters() 
     { 
       return this.filters; 
     } 
     public void setfilters(ArrayList<Filter> filters) 
     { 
       this.filters = filters; 
     } 
    } 

public class Filter 
    { 
     private String property ; 
     public String getproperty() 
     { 
       return this.property; 
     } 
     public void setproperty(String property) 
     { 
       this.property = property; 
     } 
     private String operator ; 
     public String getoperator() 
     { 
       return this.operator; 
     } 
     public void setoperator(String operator) 
     { 
       this.operator = operator; 
     } 
     private String value ; 
     public String getvalue() 
     { 
       return this.value; 
     } 
     public void setvalue(String value) 
     { 
       this.value = value; 
     } 
    } 

可以填充你的過濾對象,並創建MainModel對象和濾鏡對象添加到它。下一步使用Gson庫如下獲取您的json字符串

Gson gsonParser = new Gson(); 
String jsonString = gsonParser.toJson(mainModelObject);