2017-05-25 88 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); 

这将是更好的解决这个问题,在服务器端如果可能的话