【问题标题】:parse multi dimensiona json array android解析多维json数组android
【发布时间】:2013-12-26 16:12:08
【问题描述】:

我在解析 JSON 时遇到了问题,我陷入了一种特殊情况。 我正在尝试获取 JSON arrat“详细信息”下的所有值,但它给了我一个错误,说 JSONObject 无法转换为 JSONArray

{
"response": "true",
"errors": "<span>Success</span>",
"details": {
    "sid": "15",
    "pid": "1",
    "user_email": "chardalvarez@gmail.com",

这是我已经完成的:

String json = mParser.makeHttpRequest(API_REGISTER, "POST", params);
        Log.d("Registration Return: ", json);

        try { 
            JSONObject jObj = new JSONObject(json);
            if (jObj != null) {
                mDetails = jObj.getJSONArray("details");

                if (mDetails != null) {
                    for (int i = 0; i < mDetails.length(); i++) {
                        JSONObject c = mDetails.getJSONObject(i);

                        mPid = c.getString("sid");
                        mSid = c.getString("pid");
                        mUserEmail = c.getString("user_email");

但我仍然遇到同样的错误。我的代码做错了吗?我还使用JSONLINT 检查了我的 JSON,认为它是无效的 JSON,但它说的是有效的 JSON。非常感谢您的帮助。

【问题讨论】:

  • details 是 JSONObject 而不是 JSONArray 所以使用 jObj.getJSONObject("details"); 来获取 JSONObject 的详细信息

标签: android json


【解决方案1】:

您的 json 有效,但 detailsJSON object ,而不是 JSON array

你正在使用curly brace的详细信息,这意味着它是object

{
"response": "true",
"errors": "<span>Success</span>",
"details": {
    "sid": "15",
    "pid": "1",
    "user_email": "chardalvarez@gmail.com",

对于数组,将花括号替换为square brackets

{
"response": "true",
"errors": "<span>Success</span>",
"details": [
    "sid": "15",
    "pid": "1",
    "user_email": "chardalvarez@gmail.com",

编辑:查看您的代码,如果 details 是一个对象而不是数组,似乎更有益

(如果你有一个数组,根据你的语法,值将只存储为字符串值而不是 json 键值对)

所以改变

mDetails = jObj.getJSONArray("details");

mDetails = jObj.getJSONObject("details");

【讨论】:

    【解决方案2】:
    String json = mParser.makeHttpRequest(API_REGISTER, "POST", params);
            Log.d("Registration Return: ", json);
    
            try { 
                JSONObject jObj = new JSONObject(json);
                if (jObj != null) {
                    mDetails = jObj.getJSONObject"details");
    
                    if (mDetails != null) {
                            String sid= mDetails.getString("sid");
                            String pid = mDetails.getString("pid");
                            String mUserEmail = mDetails.getString("user_email");
    

    【讨论】:

    • 正如 gaurav5430 所建议的那样,我在提出问题之前确实尝试过,但不知何故我遇到了同样的问题,但这次是相反的!它说 JSON 对象不能转换为 JSON 数组!所以我所做的就是删除我手机上的应用程序并清理我的项目,然后再试一次,它的运气真好!谢谢大家帮我解决这个问题。感谢 gaurav5430 和 Ajay Thakur 抽出时间在这里查看我的问题 :)
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2017-02-24
    • 2022-01-19
    • 2018-08-06
    • 2014-07-04
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多