JSONArray收到错误

时间:2017-05-25 17:59:20

标签: java php arrays json

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");

编辑:问题已解决,评论中的解决方案。

2 个答案:

答案 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;

有效:)

问题解决了。