0

我正在尝试仅解析一个 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;
                }
4

1 回答 1

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);
于 2013-10-01T17:08:32.243 回答