Десериализация Android json / gson - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь проанализировать следующий массив json, полученный из моего php-файла:

actionsArray = [["19.431", "19.438"], [["8", "107"],[]], ["u1", "u2"]]

Меня в первую очередь интересует доступ к массиву [["8", "107"], []];однако я получаю сообщение об ошибке "com.google.gson.JsonParseException: ожидается массив, но найден объект: имя: ноль грамм: ноль 0 действия: ноль

Вот выдержка из моего кода:

Пользовательский класс содержит: строковое имя; int [] действия; строковые граммы

            JSONArray inputarray;
            try {
                int[] userActionsArray = new int[0];
                inputarray = new JSONArray(br.readLine());

                JSONArray gramsArray = (JSONArray)inputarray.get(0);
                JSONArray actionsArray = (JSONArray)inputarray.get(1);
                JSONArray namesArray = (JSONArray) inputarray.get(2);

                User[] values = new User[namesArray.length()];

                Gson gson = new Gson();
                *User userAction = gson.fromJson(inputarray.toString(), User.class); 
                //error occurs on the above line*
                ...

Ответы [ 2 ]

2 голосов
/ 10 октября 2012

Эта проблема обычно возникает, когда вы пытаетесь проанализировать массив, но сервис отвечает как объект. Поэтому сначала проверьте полученный ответ, а затем попробуйте выполнить соответствующий анализ.

1 голос
/ 10 февраля 2012

A JSONArray из org.json, который метод .toString () возвращает как ["first","second"] (источник доступен здесь )

Ваш JSON должен выглядеть следующим образом: { myArray : [ "first", "second" ] } чтобы Gson проанализировал его ... Где ваш POJO (в вашем случае User.class) должен выглядеть так:

public User {
 String[] myArray;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...