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 JSONArray
有谁知道导致此错误的原因是什么?当我从服务器输出尝试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");
编辑:问题已解决,评论中的解决方案。
答案 0 :(得分: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);
如果可能的话,最好在服务器端修复此问题
答案 1 :(得分:0)
马特·克拉克,就像你建议我试图修复服务器端的问题一样。代码:
$aOutput = array('iActualJoinRequests' => $iActualJoinRequests, 'jaPassengers' => $aPassengers);
$joOutput = json_encode($aOutput, JSON_FORCE_OBJECT);
echo $joOutput;
当我尝试获取JSONArray jaPassengers时,导致java出错,但是:
$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;
有效:)
问题解决了。