Как разобрать только один объект Json в 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 ответ

Способ анализа JSON зависит от вашего формата JSON. Есть 2 шаблона JSON:

  • JSON Arrays:

    {"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);
Другие вопросы по тегам