我从MySQL查询发送数据数组,我使用json_encode来做到这一点:
pixel_end
在Android LogCat中,当我创建JSON对象时,我看到了:
public function getFriends($id){
$query = mysql_query(" SELECT uid, name, email
FROM users
RIGHT JOIN friendships
ON friendid2 = uid") or die (mysql_error());
$jsonData = '{"tag":"friends",error":"false",';
$jsonData .= '"friends":[';
while($row = mysql_fetch_array($query)){
$i++;
$id = $row["uid"];
$name = $row["name"];
$email = $row["email"];
$jsonData .= '{"id":"'.$id.'","name":"'.$name.'","email":"'.$email.'"},';
}
$jsonData = chop($jsonData, ",");
$jsonData .= ']}';
echo json_encode($jsonData);
谁能告诉我我做错了什么? Becouse我搜索了一些toutorials,我认为我的json语法是正确的。
我从服务器接收消息的方式:
org.json.JSONException: Value {"tag":"friends",error":"false","friends":[{"id":"4","name":"GrubyJohny2","email":"grubyjohnny@gmail.com"},{"id":"243000000","name":"Wariacik","email":"karoltomczyk92@wp.com"}]} of type java.lang.String cannot be converted to JSONObject
答案 0 :(得分:0)
"friends",error":"false"
error
密钥需要双方引用。
您可以在许多免费服务中复制/粘贴JSON,例如jsonlint.org将为您解析字符串并告诉您错误的位置和位置。
正如@Noman在评论中指出的那样,您也可以将整个数据构建为PHP数组(而不仅仅是部分数据),然后简单地json_encode
所有数据端:
$jsonData = array(
'tag' => 'friends',
'error' => 'false',
'friends' => array(),
);
while($row = mysql_fetch_array($query)) {
$jsonData['friends'][] = array(
'id' => $row['uid'],
'name' => $row['name'],
'email' => $row['email'],
);
}
echo json_encode($jsonData);
此外,应该注意mysql_query
以及所有mysql_*
函数现在已被弃用。您不应该编写使用这些函数的新代码。相反,您应该学会使用PDO或mysqli扩展名与数据库进行通信。