我试图从以 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/