2017-02-20 23 views
-8

JSON: -如何修復錯誤類型不兼容「必需的字符串,發現JSON數組」

{ 
"events": ["wedding", "wed"], 
"event_location": ["", ""], 
"event_studio": [ 
    ["makeover", "epica", "Raddisson"], 
    ["makeover", "epica"], 
    ["Raddisson", "makeover", "contours"] 
], 
"event_studio_location": [ 
    ["Ernakulam", "thrissur", "kollam"], 
    ["Ernakulam", "thrissur"], 
    ["kollam", "Ernakulam", "Malappuram"] 
] 
} 

想從json的事件,並將其存儲在字符串數組。

String[] a=new String[responseBody.getJSONArray("events").length()]; 
a=responseBody.getJSONArray("events"); 

顯示錯誤類型不兼容所需的字符串中發現JSON數組

+0

一個是字符串數組,你要轉讓JsonArray。這就是它出錯的原因。你應該嘗試[i] = responseBody.getJSONArray(「events」)。toString(); –

+0

好吧,我知道,但我想直接將json數組轉換爲字符串數組 –

+0

您可以使用for循環相同.. –

回答

0

檢查JsonString對象是即將到來的JSON字符串,JsonObjct或JsonArray。通過instanceof並按住JSONTokener

您JsonString像婁代碼

Object object = new JSONTokener(jsonString).nextValue(); 

if (object instanceof JSONObject) 
{ 
    JSONObject jsonObject = (JSONObject) object; 
} 
else if (object instanceof JSONArray) 
{ 
    JSONArray jsonArray = (JSONArray) object; 
} 
+0

「檢查JsonString對象是即將到來的Json String,JsonObjct或JsonArray」這是什麼意思 –

+0

我們可以在JsonTokenar中保存String響應,並且Check Json響應根節點是Array或Object,與在內部節點中逐一應用的相同。 –

+0

當你找到數組,然後像其他解決方案一樣,你可以創建一個for循環並從JsonArray獲得所有的Strings。 –

0

你不能直接轉換jsonarray到字符串數組。您可以使用此功能將jsonarray轉換爲字符串:

public static String[] toStringArray(JSONArray array) { 
if(array==null) 
    return null; 

String[] arr=new String[array.length()]; 
for(int i=0; i<arr.length; i++) { 
    arr[i]=array.optString(i); 
} 
return arr; 
} 

這將解決您的問題。

-1

嘗試下面的代碼

try { 
     JSONObject jsonObject = new JSONObject(responseBody); 
     JSONArray jsonArray = jsonObject.getJSONArray("events"); 

     String[] arrayEvents=new String[jsonArray.length()]; 
     for(int i=0; i<arrayEvents.length; i++) { 
      arrayEvents[i]=jsonArray.optString(i); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
相關問題