解析多维json数组android

时间:2013-12-26 07:50:05

标签: android json

我在解析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。非常感谢帮助。

2 个答案:

答案 0 :(得分: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",

编辑:看看你的代码,如果细节是一个对象而不是一个数组,它似乎更有益

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

改变
mDetails = jObj.getJSONArray("details");

mDetails = jObj.getJSONObject("details");

答案 1 :(得分:0)

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