2017-05-25 89 views
-3

org.json.JSONException: Value [{"id":"98747406","name":"adam","surname":"hfdd","age":"2","latitude":"54.2118","longitude":"16.1876","origin":"koszalin","destination":"sian\u00f3w","ride_id":"262243421","date":"2017-05-25 18:13:00"}] at jaPassengers of type java.lang.String cannot be converted to JSONArrayJSONArray獲取錯誤

有沒有人知道是什麼原因導致此錯誤?它發生時,我嘗試getJSONArray從服務器的輸出如:

輸出:

{ 「iActualJoinRequests」: 「4」, 「jaPassengers」: 「[{\」 ID \ 「:\」 98747406 \」 ,\ 「名稱\」:\ 「亞當\」,\ 「姓\」:\ 「HFDD \」,\ 「年齡\」:\ 「2 \」,\ 「緯度\」:\ 「54.2113448 \」,\ 「經度\」:\ 「16.1876282 \」,\ 「出身\」:\ 「科沙林\」,\ 「目標\」:\ 「仙\ u00f3w \」,\ 「ride_id \」:\ 「262243421 \」,\ 「日期\」:\ 「2017年5月25日 18:13:00 \」}]「}

JSONObject joOutput = new JSONObject(output); 
JSONArray jaPassengers = joOutput.getJSONArray("jaPassengers"); 

編輯:問題解決了,在溶液評論。

+2

你能告訴我你是如何轉換它或你得到錯誤的行(代碼) –

+0

更新代碼,你如何嘗試轉換成JSON數組? –

+1

原因是它無法轉換,因爲異常狀態。 JSON格式不正確,不能被解析。如果您想解決問題而不是問爲什麼會發生這種情況,請發佈代碼 –

回答

0

馬特克拉克,就像你建議我試圖修復服務器端的問題。代碼:在java中,當我試圖讓JSONArray jaPassengers

$aOutput = array('iActualJoinRequests' => $iActualJoinRequests, 'jaPassengers' => $aPassengers); 
$joOutput = json_encode($aOutput, JSON_FORCE_OBJECT); 
echo $joOutput; 

原因的錯誤,但:

$aOutput = array('iActualJoinRequests' => $iActualJoinRequests, 'jaPassengers' => ''); 
    $joOutput = json_encode($aOutput, JSON_FORCE_OBJECT); 
    $joOutput = json_decode($joOutput); 
    $joOutput -> jaPassengers = $aPassengers; 
    $joOutput = json_encode($joOutput); 
    echo $joOutput; 

作品:)

問題解決了。

1

如果您使用的json parser,誤差會變得非常清楚:

"jaPassengers" : "[{\"id\":\"98747406\",\"name\":\"adam\",\"surname\":\"hfdd\",\"age\":\"2\",\"latitude\":\"54.2113448\",\"longitude\":\"16.1876282\",\"origin\":\"koszalin\",\"destination\":\"sian\u00f3w\",\"ride_id\":\"262243421\",\"date\":\"2017-05-25 18:13:00\"}]" 

陣列實際上被編碼爲一個字符串。

爲了解析這一點,首先把它拿來作爲一個字符串,然後解析生成的字符串作爲JSONArray:

JSONObject joOutput = new JSONObject(output); 

String makeShiftArray = joOutput.getString("jaPassengers"); 

JSONArray jaPassengers = new JSONArray(makeShiftArray); 

這將是更好的解決這個問題,在服務器端如果可能的話