【问题标题】:Parse JSON URL - JSONException Error解析 JSON URL - JSONException 错误
【发布时间】:2015-05-15 11:37:16
【问题描述】:

请您帮帮我,我正在尝试从 URL 解析 JSON 文件。下面是我用来抓取文件的代码,最初只是将它发布到 TextView,但现在我想解析标签并使用它们?

private void postData(final String param, final TextView tv) {

    final RequestQueue request = Volley.newRequestQueue(this);

    JSONObject postReq = new JSONObject(Request.Method.GET, url_login, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            System.out.println("Error [" + error + "]");

        }
    }) {

        @Override
        public Map getHeaders() throws AuthFailureError {
            Map headers = new HashMap();
            headers.put("Accept", "application/json");
            System.out.println(headers);
            return headers;
        }
    };
    request.add(postReq);
}

以下是 JSON 的示例

{
“UserInfo”: {
    “User”: {
        “name”: “Craig”,
        “surname”: "Churchill",
        "userId": "1463353",
        "userAlias": "Craig"
    }
  }
}

我已经尝试过this,但一直失败,无法做到正确。

【问题讨论】:

  • 请去掉你最后的逗号(在“Craig”之后)......你能添加你的例外吗,它很有用,有时......
  • 最后一个键值对不包含逗号。
  • 也许是错误? :)
  • @biology.info jsonlint 如果在最后一个键值对上带有逗号,则不会通过。但是我和他们一起使用了一些 json,它们不会崩溃。
  • 看图片,如果你在错误IDE上按ALT+ENTER将“尝试帮助”

标签: java android json gson android-volley


【解决方案1】:
{
    "UserInfo": {
        "User": {
            "name": "Craig",
            "surname": "Churchill",
            "userId": "1463353",
            "userAlias": "Craig"
        }
    }
}

这是一个有效的 json。我已经在http://jsonlint.com/ 上试过了,但是你有一些双逗号,它们的编码很奇怪。我把上面的 json 用正确的双引号括起来,因为 jsonlint 在我更改它们之前会给出验证 json 的错误。

问题可能在于您如何访问对象及其子对象。试试这个方法。

@Override
public void onResponse(JSONObject response) {
    try {
        JSONObject userObj = response.getJSONObject("UserInfo")
                            .getJSONObject("User");
        String name = userObj.getString("name");
        ...
    } catch (JSONException jsEx) {
        jsEx.printStackTrace();
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多