Android:无法从多维 MongoDB jsonObject 转换为 JSONArray

标签 android json mongodb

我试图从以 mongodb 作为数据库和 CI 的站点获取数据,我制作了简单的脚本来对站点的输出进行 json 编码,输出如下:

   {
   "mko680": {
       "_id": {
       "$id": "515be1807bfb8b1d0d000000"
        },
       "channel": [
                  "channel a",
                  "subchannel a"
                  ],
       "channel_id": 227,
       "id": "mko680",
    }, 
   "mkv002": {
       "_id": {
       "$id": "515b32407bfb8b1d0d000000"
             },
       "channel": [
                 "channel a",
                 "subchannel b"
                   ],
       "channel_id": 232,
       "id": "mkv002",
  }
}

我尝试像这样在我的 android 项目中解析该输出

JSONArray obj = new JSONArray(outputlike o);
for (int i = 0; i < obj.length(); i++) {
  JSONObject json_data = obj.getJSONObject(i);
  Log.i("test",json_data.getString("channel_id"));
}

logcat 说 org.JSON.Mismatch

json/我的代码有什么不对的线索吗?

谢谢,很抱歉我的问题很糟糕,希望你能理解

更新:

现在我将其更改为 json 对象,例如:

JSONObject arr = new JSONObject(bufstring);
for (int i = 0; i < arr.length(); i++) {
Log.i("test",arr.getString("channel_id"));
}

但是 logcat 现在说,channel_id 没有值,但是输出中肯定有 channel_id,有什么线索吗?

最佳答案

您收到的数据是 JSONObject 类型,而不是 JSONArray。因此,您需要像这样解析您的 json 数据:-

String jsonStr = "..."; //Your JSONString
JSONObject obj = new JSONObject(jsonStr);
JSONObject mkObj = obj.getJSONObject("mko680");
String channelId = mkObj.getString("channel_id");

关于Android:无法从多维 MongoDB jsonObject 转换为 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782226/

相关文章:

c# - 序列化嵌套的json c#

json - Cassandra vs MongoDB - 使用以前未知的键存储 JSON 数据?

更新后MongoDB启动警告

java - OpenFileOutput() 得到一个 nullPointerException

Android Master Detail Flow - 仅在平板电脑上选择列表中的第一项

android - 如何让所有 child 在 Horizo​​ntalScrollView android 屏幕上可见

javascript - 如何在 Meteor 中动态更新/设置集合的子属性?

android - 更新 fragment 布局

json - 需要 Unity3d 的 JSON 解析器

javascript - 处理太大而无法放入内存的 JSON 对象