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