Android,创建不同种类的jsonObject

时间:2012-08-27 13:35:47

标签: android json

我想创建一个创建我的jsonObject的泛型类。 是否可以创建一个可以创建不同类型对象的类,如

{"chunkSize":10,"filters"
[{"field":"segmentOwners.id","operator":"EQUAL","value":"11578","valueType":"java.lang.Integer"},
{"field":"language","operator":"EQUAL","value":"FR","valueType":"java.lang.String"},
{"field":"customerId","operator":"EQUAL","value":"77","valueType":"java.lang.Integer"}]
,"orderBy":[{"field":"creationTime","order":"DESC"}],"page":0}

或只是一个简单的请求:

{login:"mylogin",pwd:"mypwd"}

我尝试过类似的事情:

    @Override
    protected JSONObject doInBackground(String... params) {
        byte[] result = null;
        Iterator iter = mData.entrySet().iterator();

       JSONObject jsonObj = new JSONObject();

        Iterator it = mData.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pairs = (Map.Entry)it.next();
            try {
                jsonObj.put((String) pairs.getKey(), (String) pairs.getValue());
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            it.remove(); // avoids a ConcurrentModificationException
        }

但我不确定这是一种类型的hashmap(string,jsonObjet ......?)

2 个答案:

答案 0 :(得分:1)

如果要从JSON字符串创建JSONObject的实例,请执行以下操作:

JSONObject jsonObj = new JSONObject("<your json string>");

答案 1 :(得分:0)

我会创建通用容器类(即DataContainer),无论它拥有什么数据(即setFromJson()getData()),它都会公开统一的API。然后为每个数据结构创建单独的对象(即DataLoginDataSomething)。然后,当您从远程源获取json数据时,您可以创建DataLogin对象并将其传递给DataContainer(或将json传递给DataContainer,以便它可以检测到应该使用DataLogin并且创建它本身,但这需要一些逻辑,这可能不是最好的方法)。然后,所有期望对你的json数据起作用的方法都可以被传递给DataContainer对象,并且方法可以对它进行getType()(当然你需要自己设置类型),这将返回存储的数据然后{{ 1}}让数据自己工作。