我正在尝试创建一个简单的Android应用程序,它从数据库获取数据并在android屏幕上以列表格式显示它。我创建了一个查询数据库并返回json对象的php脚本。我将json对象转换为json数组并提取相关数据以供显示。但我收到此错误“JSONException:类型org.json.JSONObject无法转换为JSONArray”。
以下是我的php脚本 -
// response Array
$response = array("tag" => $tag, "success" => 0, "error" => 0);
$username = $_POST['username'];
$events = $db->viewAttendingEvent($username);
if ($events) {
$response["success"] = 1;
$response["event"]["owner"] = $events["owner"];
$response["event"]["friendsnames"] = $events["friendsnames"];
$response["event"]["vote"] = $events["vote"];
$response["event"]["accepted"] = $events["accepted"];
$response["event"]["eventname"] = $events["eventname"];
$response["event"]["eventnumber"] = $events["eventnumber"];
$response["event"]["created_at"] = $events["created_at"];
echo json_encode($response);
这是我收到的json:
{
"tag": "view_invitations",
"success": 1,
"error": 0,
"event": {
"owner": "jkkkkoopp",
"friendsnames": "don",
"vote": "0",
"accepted": "f",
"eventname": "yyy",
"eventnumber": "11",
"created_at": "2014-05-29 22:27:31.843528"
}
}
我试图从这个json对象中提取'event',它不是一个数组。 它应该是
{
"event": [
{
"owner": "jkkkkoopp",
"friendsnames": "don",
"vote": "0",
"accepted": "f",
"eventname": "yyy",
"eventnumber": "11",
"created_at": "2014-05-2922: 27: 31.843528"
}
]
}
有人可以帮助我如何使其成为有效的jsonArray吗?谢谢
答案 0 :(得分:0)
如果您希望获得JavaScript'数组' (我的意思是 Object 只有整数键),那么你需要在PHP数组中只有整数键。
This article是一个非常好的资源,并解释了javascript中数组和对象之间的一些差异。这里的相关引用来自 What Arrays Are 部分(强调我的):
Javascript数组是一种用于存储多个对象的对象 单个变量中的值。 每个值都有数字索引,可能是 任何数据类型。
答案 1 :(得分:0)
不,不应该是你提出的应该是的。如果是这种情况你必须让你的PHP成为这样:
$response["event"][0]["owner"] = $events["owner"];
$response["event"][0]["friendsnames"] = $events["friendsnames"];
$response["event"][0]["vote"] = $events["vote"];
$response["event"][0]["accepted"] = $events["accepted"];
$response["event"][0]["eventname"] = $events["eventname"];
$response["event"][0]["eventnumber"] = $events["eventnumber"];
$response["event"][0]["created_at"] = $events["created_at"];
现在你的方式是event
是一个关联数组,所以它将它转换为一个对象。您期望event
=一个对象数组。因此,您需要更改PHP代码以使事件成为对象数组(如上所示),或者您需要修改期望event
=对象。