2012-02-10 15 views
0

Я пытаюсь разобрать следующий JSON массив, который я получаю от моего PHP файла:Android JSON/gson десериализации

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* 
       ... 

ответ

1

JSONArray от org.json, которую .ToString() возвращает метод как ["first","second"] (источник доступных here)

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

public User { 
String[] myArray; 
} 
+0

Привет, спасибо за ваш ответ. Это имеет смысл, но я не уверен, что правильный способ - заставить JSONArray следовать указанному вами формату. {MyArray: ["first", "second"]}. Не могли бы вы указать мне в правильном направлении? – user836200

+0

Можете ли вы создать цикл и просто распечатать все строки, чтобы мы могли видеть весь JSON? (Завершите цикл над br.readLine() и распечатайте его). Или вы вручную создаете JSON? –

+0

Мне удалось решить проблему после использования объектов ArrayList. Я отказался от gson и сохранил JSONArrays. Я получил JSONArray из файла php. Спасибо за вашу помощь (+1). – user836200

2

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

Смежные вопросы