如何从字符串声明复合java JSON对象?

时间:2014-03-12 08:29:11

标签: java android json string httprequest

我有这个字符串,我用它来测试api:

{"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方法创建“过滤器”部分...

对此有什么最有效和最有效的解决方案?

3 个答案:

答案 0 :(得分: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")
        )
   );

或者,查看像Gson这样的POJO映射器,为了便于使用和一致性,我会建议整体使用。

答案 1 :(得分: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);

答案 2 :(得分:0)

使用Gson Library。您的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);