我的php:
<?php
$con=mysqli_connect("localhost","xxx","xxx","xxx");
$result = mysqli_query($con, "SELECT username, x,y FROM user");
$jsonData = array();
while($array = mysqli_fetch_assoc($result)){
$jsonData[] = $array;
}
echo json_encode($jsonData);
mysqli_close($con);
?>
我获取的数据到JSONArray:[{"username":"one","x":"22.","y":"55"},{"username":"two","x":2,"y":5}]
Android代码:
//Connect to mysql.
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http:example.com/fetchCoordinates.php");
//Getting response
HttpResponse response = httpClient.execute(httpPost);
String responseBody = EntityUtils.toString(response.getEntity());
//Trying to get fetch from array.
JSONArray array = new JSONArray(responseBody);
JSONObject jsonObject = array.getJSONObject(0);
double x = jsonObject.getDouble("x");
Eror:
org.json.JSONArray无法转换为JSONObject
它不起作用。我坚持了下来。
答案 0 :(得分:0)
您的JSON有效,但您的问题是它不包含JSONObject。它只是一个字符串数组的数组。要实际获取JSONObjects,它需要是一个实际JSONObjects的数组。尝试将数据格式化为:
[{
"name": "one",
"num1": "22",
"num2": "55"
},
{
"name": "two",
"num1": "2",
"num2": "5"
}]
请注意,括号[]
中包含的数组包含逗号分隔的JSONObject,它们是大括号{}
中包含的键值对。
您应该阅读有关如何正确格式化JSON的信息。这是一个很好的资源:http://www.w3schools.com/json/default.asp
另请参阅此答案以获取一些有用的信息: How do you represent a JSON array of strings?
答案 1 :(得分:0)
要从数组创建一个json对象,该数组必须是关联的,因此您可以将代码更改为此类以实现该目标。
while($array = mysqli_fetch_assoc($result)){
$jsonData[] = $array;
}
答案 2 :(得分:0)
问题出在我的PHP代码中。
出了什么问题:
while($array = mysqli_fetch_rows($result)){
$jsonData[] = $array;}
什么是正确的:
while($array = mysqli_fetch_assoc($result)){
$jsonData[] = $array;}
为什么?
第一个方法(fetch_rows)没有给我JSONArray和JSONObjects 在里面,但我得到了带有JSONStrings的JSONArray。
在java代码中,我试图从JSONArray接收JSONObject,但我是 得到错误,因为没有任何对象(有字符串)。