2012-02-10 13 views
0

私は私のPHPファイルから受け取り、次のJSON配列を解析しようとしています:AndroidのJSON/gsonデシリアライゼーション

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

私は主に配列[[" 8 "、" 107 "]、[]]へのアクセスに興味があります。しかし、私はエラーを取得し、「com.google.gson.JsonParseException:期待配列が、見つかったオブジェクト:名前:ヌルグラム:ヌル0アクション:ヌル

は、ここに私のコードからの抜粋です:

Userクラスが含まれています:文字列名; []アクションを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は、あなたがあなたのJSONを必要としている["first","second"]として.toString()メソッドが返す(利用可能なソースhere

、org.jsonからですロ以下のように[OK]:あなたは、配列を解析しようとするが、サービスが対象と応答しているとき

public User { 
String[] myArray; 
} 
+0

ご回答ありがとうございます。これは理にかなっていますが、JSONArrayを指定されたフォーマット{myArray:["first"、 "second"]}に従うのが正しい方法がわかりません。あなたは私を正しい方向に向けることができますか? – user836200

+0

ループを作成してすべての行を印刷するだけで、JSON全体を表示できますか? (単にbr.readLine()をループして印刷してください)。または、JSONを手動で生成していますか? –

+0

ArrayListオブジェクトを使用した後で問題を解決できました。私はgsonをあきらめて、JSONArraysを保持しました。私はPHPファイルからJSONArrayを取得しました。あなたの助けに感謝します(+1)。 – user836200

2

この問題は、通常発生します(あなたのケースUser.classで)あなたのPOJOは次のようになります。どこGsonは...それを解析するための{ myArray : [ "first", "second" ] }。だから最初にあなたがそれに応じて解析しようとしている応答をテストしてください。

関連する問題