android - 从 JSON 对象中读取整数或字符串数​​组

标签 android json

对于我的一项 Web 服务,我收到以下响应。

"COLUMNS": [
        "DIST_ID",
        "NAME",
        "HOME_PHONE",
        "PAID_RANK",
        "END_RANK",
        "VOL1",
        "VOL3"
    ]
"DATA": {
        "DIST_ID": [
            3,
            1002,
            1040,
            1290,
            1041,
            1421,
            7200,
            5980,
            3962,
            1070,
            9369,
        ]
    }

我该如何解析?

我试过

JSONArray colArray = response.getJSONArray(COLUMNS);
            for(int i=0; i<colArray.length(); i++){
                if(Constants.LOG)Log.d("","Column "+colArray.getJSONObject(i).toString());
            }

但是没有用。它抛出像

这样的异常
09-30 12:51:56.076: W/System.err(3003): org.json.JSONException: Value DIST_ID at 0 of type java.lang.String cannot be converted to JSONObject
09-30 12:51:56.076: W/System.err(3003):     at org.json.JSON.typeMismatch(JSON.java:96)
09-30 12:51:56.076: W/System.err(3003):     at org.json.JSONArray.getJSONObject(JSONArray.java:484)
09-30 12:51:56.076: W/System.err(3003):     at com.vl.infotrax.modules.reports.ReportsEngine.parseReportsDetailsData(ReportsEngine.java:156)
09-30 12:51:56.076: W/System.err(3003):     at com.vl.infotrax.modules.reports.ReportsEngine.retrieveReportsDetailsData(ReportsEngine.java:126)
09-30 12:51:56.076: W/System.err(3003):     at com.vl.infotrax.modules.reports.ReportsDetailsFragment$GetReportsDetailsData.doInBackground(ReportsDetailsFragment.java:66)
09-30 12:51:56.076: W/System.err(3003):     at com.vl.infotrax.modules.reports.ReportsDetailsFragment$GetReportsDetailsData.doInBackground(ReportsDetailsFragment.java:1)
09-30 12:51:56.084: W/System.err(3003):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-30 12:51:56.084: W/System.err(3003):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-30 12:51:56.084: W/System.err(3003):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-30 12:51:56.084: W/System.err(3003):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
09-30 12:51:56.084: W/System.err(3003):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
09-30 12:51:56.084: W/System.err(3003):     at java.lang.Thread.run(Thread.java:1096)

有人知道如何解决这个问题吗? 提前致谢。

最佳答案

JSONArray colArray = response.getJSONArray(COLUMNS);
    for(int i=0; i<colArray.length(); i++){
        Log.d("","Column "+colArray.getString(i));
    }

关于android - 从 JSON 对象中读取整数或字符串数​​组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19088577/

相关文章:

python - 在Python中通过引用更改json对象数据

javascript - 使用 jQuery 按值属性对选择选项进行排序

java - Hibernate 多对多和 JSON 序列化

android - 如何更改 fragment 中的工具栏?

java - 将 Twitter API 添加到我的应用程序

java - Gradle 不会将 jar 文件中的 .java 编译为 .class

c - 从文件读取数据后动态存储数据

android - 我应该如何编码来抵抗 "one-click piracy"?

android - 更改许多控件的默认颜色

json - 在 NodeJs 中读取 JSON 时,对象为 null