【问题标题】:Java JSON parsing exception after creating JSON in PHP on the server在服务器上的 PHP 中创建 JSON 后 Java JSON 解析异常
【发布时间】:2013-02-02 05:56:32
【问题描述】:

我有这个从服务器传递过来的字符串:

{\"error\":\"email_in_diff_account\"}

它是这样在 PHP 中创建的:

$post_data = array('error' => "email_in_diff_account");

echo json_encode($post_data);

但是当我尝试在 JAVA 中像这样解析它时:

JSONArray obj = new JSONArray(result);

它会导致以下异常。

org.json.JSONObject 无法转换为 JSONArray

有人知道如何解决这个问题吗?我没有在 php 中正确创建 JSON 吗?

【问题讨论】:

  • 请不要忘记发布您的异常/错误消息。当你这样做时,不要把它埋在评论中

标签: java php json


【解决方案1】:

如果您使用的是http://www.json.org/javadoc/org/json/JSONArray.html

你正在尝试解析一个数组,但你传递给它一个对象,你应该使用http://www.json.org/javadoc/org/json/JSONObject.html

JSONObject json = new JSONObject(result);

【讨论】:

    【解决方案2】:

    如果有这些反斜杠,那将是您的问题。不过请发布例外情况。

    【讨论】:

    • 这是个例外:org.json.JSONObject 无法转换为 JSONArray
    【解决方案3】:

    首先这段代码不能像这样创建json

    $post_data = array('error' => "email_in_diff_account");
    echo json_encode($post_data);
    
    {\"error\":\"email_in_diff_account\"}   // your output
    
    {"error":"email_in_diff_account"}   // actual output
    

    您可以使用此链接http://jsonlint.com/ 验证您的 JSON

    查看代码的工作示例http://codepad.org/oJXj0GdI

    【讨论】:

    • 你的意思是 PHP 应该在没有反斜杠的情况下创建这些字符串?
    • PHP 没有添加反斜杠,这是您用来显示字符串的任何东西的产物
    【解决方案4】:

    正确的用法是: JSONObject json = new JSONObject(result);

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      相关资源
      最近更新 更多