【问题标题】:JSONArray getting errorJSONArray 出现错误
【发布时间】:2017-10-26 11:38:44
【问题描述】:

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\",\"name\":\"adam\",\"surname\":\ "hfdd\",\"年龄\":\"2\",\"纬度\":\"54.2113448\",\"经度\":\"16.1876282\",\"原点\":\"koszalin \",\"目的地\":\"sian\u00f3w\",\"ride_id\":\"262243421\",\"日期\":\"2017-05-25 18:13:00\"}]"}

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

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

【问题讨论】:

  • 你能说明你是如何转换它的或者你得到错误的行(代码)
  • 更新代码,你是如何尝试转换成 JSON 数组的?
  • 原因是无法转换,如异常状态。 JSON 未正确格式化为数组,无法解析。如果您想解决问题而不是问为什么会发生,请发布代码
  • 为了尽快获得更好的帮助,发布minimal reproducible example(又名SSCCE)。
  • 我编辑了帖子并描述了我想如何获得这个数组的方法。这不是从应用程序复制和粘贴,我稍后粘贴代码。

标签: java php arrays json


【解决方案1】:

Matt Clark,就像您建议的那样,我正在尝试解决服务器端的问题。代码:

$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;

工作:)

问题解决了。

【讨论】:

    【解决方案2】:

    如果您使用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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-09
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多