如何在Datadroid中只解析一个Json对象?

时间:2013-09-25 15:48:48

标签: arrays json parsing object datadroid

我正在尝试只解析一个json对象,但该方法只有在我有多个元素时才有效。在JsonFactory类中。我认为这是一个错误。

      public static ArrayList<Person> parseResult(String wsResponse) throws DataException {
                    ArrayList<Person> personList = new ArrayList<Person>();

                    try {
                        JSONObject parser = new JSONObject(wsResponse);
                        JSONObject jsonRoot = parser.getJSONObject(JSONTag.PERSON_LIST_ELEM_PEOPLE);
                        JSONArray jsonArray = jsonRoot
                                .getJSONArray(JSONTag.PERSON_LIST_ELEM_PERSON);
                        int size = jsonArray.length();
                        for (int i = 0; i < size; i++) {
                            JSONObject json = jsonArray.getJSONObject(i);
                            Person person = new Person();


                            person.name = json.getString(JSONTag.PERSON_LIST_ELEM_PERSON_NAME);



                            personList.add(person);
                        }
                    } catch (JSONException e) {
                        Log.e(TAG, "JSONException", e);
                        throw new DataException(e);
                    }

                    return personList;
                }

1 个答案:

答案 0 :(得分:1)

解析JSON的方法取决于您的JSON格式。 JSON有两种模式:

  • JSON数组:

    {“myarray”:[{obj1},{obj2},{obj3},...]]

  • JSON对象:

    {“myobject”:{field1:“”,field2:“”,...}}

您只需要使用相应的代码即可。 在您粘贴的代码中,我需要一个JSON数组。

如果您只有一个对象,只需将代码修改为仅使用一个对象即可。有些类似于:

JSONObject parser = new JSONObject(wsResponse);
JSONObject jsonRoot = parser.getJSONObject(JSONTag.PERSON_LIST_ELEM_PEOPLE);
JSONObject json = jsonRoot.getJSONObject(JSONTag.<<MY_OBJECT>>)

person.name = json.getString(JSONTag.PERSON_LIST_ELEM_PERSON_NAME);