0

1 つの 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 には 2 つのパターンがあります。

  • JSON 配列:

    { "myarray" : [ {obj1}, {obj2}, {obj3}, ... ] ]

  • JSON オブジェクト:

    { "myobject" : { field1:"", field2:"", ...} }

それに対応するコードを使用するだけです。貼り付けたコードでは、JSON 配列が必要でした。

オブジェクトが 1 つしかない場合は、コードを変更して 1 つのオブジェクトのみを使用するようにします。次のようなもの:

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 に答える