2012-02-10 145 views
0

我試圖解析從我的PHP文件收到以下JSON數組:的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,其(可用here源)

中的ToString()方法返回爲["first","second"]你需要你的JSON來羅確定這樣的:{ myArray : [ "first", "second" ] }爲GSON解析它......當你的POJO(在你的情況User.class)應該是這樣的:當您嘗試解析數組,但服務響應爲目標,通常會出現

public User { 
String[] myArray; 
} 
+0

嗨,謝謝你的回覆。這是有道理的,但我不確定讓我的JSONArray遵循指定的格式{myArray:[「first」,「second」]}的正確方法。你能指出我正確的方向嗎? – user836200 2012-02-10 02:11:24

+0

你可以創建一個循環,只是打印所有的行,所以我們可以看到整個JSON? (只需循環br.readLine()並打印出來)。或者你手動生成JSON? – 2012-02-10 18:05:07

+0

使用ArrayList對象後,我能夠解決問題。我放棄了gson並保留了JSONArray。我從一個php文件中檢索了JSONArray。感謝您的幫助(+1)。 – user836200 2012-02-11 01:02:30

2

此問題。因此,首先測試你得到的迴應,然後嘗試相應地進行解析。