我正在尝试使用json_encode()函数在php中创建json数据。然后我将在客户端使用这些数据。我实现了一些部分。我当前的代码以这种格式显示json数据
{
"data":
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc8f94f1a51c5.32653037",
"name":"Zafar Saleem",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile1.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place1.jpg",
"created_at":"2012-06-02 00:00:00",
"seeked":"0"
}
}
}
{
"data":
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c413554104.22444656",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile2.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place2.jpg",
"created_at":"2012-06-03 00:00:00",
"seeked":"0"
}
}
}
{
"data":
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c48c529675.45551665",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile3.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place3.jpg",
"created_at":"2012-06-04 00:00:00",
"seeked":"20"
}
}
}
我希望以此形式显示上述数据
{
"data":
[
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc8f94f1a51c5.32653037",
"name":"Zafar Saleem",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile1.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place1.jpg",
"created_at":"2012-06-02 00:00:00",
"seeked":"0"
}
},
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c413554104.22444656",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile2.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place2.jpg",
"created_at":"2012-06-03 00:00:00",
"seeked":"0"
}
},
{
"tag":"home",
"success":1,
"error":0,
"uid":"4fc9c48c529675.45551665",
"name":"Name",
"profile_photo":"http:\/\/example.info\/android\/profile_photos\/profile3.jpg",
"places":
{
"place_photo":"http:\/\/example.info\/android\/places_photos\/place3.jpg",
"created_at":"2012-06-04 00:00:00",
"seeked":"20"
}
}
]
}
这是我生成json数据的php代码
从数据库获取数据的数据库函数
public function getHome() {
$result = mysql_query("SELECT * FROM places") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$data[] = $row;
}
return $data;
/*
$result = mysql_fetch_array($result);
return $result;
*/
} else {
// user not found
return false;
}
}
这是我在php上制作json的地方
if($db->getHome()) {
$data = $db->getHome();
foreach($data as $r) {
$response['success'] = 1;
$response['uid'] = $r['uid'];
$response['name'] = $r['name'];
$response['profile_photo'] = $r['profile_photo_path'];
$response['places']['place_photo'] = $r['place_photo_path'];
$response['places']['latitude'] = $r['latitude'];
$response['places']['longitude'] = $r['longitude'];
$response['places']['created_at'] = $r['created_at'];
$response['places']['seeked'] = $r['total_completed'];
echo json_encode(array('data' => $response));
}
} else {
$response['error'] = 1;
$response['error_msg'] = 'No data available';
echo json_encode($response);
}
答案 0 :(得分:2)
考虑使代码看起来像这样:
// this function turns a database row into data for frontend use
function convert_to_response($r)
{
return array(
'success' => 1,
'uid' => $r['uid'],
'name' => $r['name'],
'profile_photo' => $r['profile_photo_path'],
'places' => array(
'place_photo' => $r['place_photo_path'],
'latitude' => $r['latitude'],
'longitude' => $r['longitude'],
'created_at' => $r['created_at'],
'seeked' => $r['total_completed'],
),
);
}
if($db->getHome()) {
$data = $db->getHome();
echo json_encode(array(
'data' => array_map('convert_to_response', $data) // convert data array
));
} else {
$response['error'] = 1;
$response['error_msg'] = 'No data available';
echo json_encode($response);
}
您的代码单独回显每个数据行,这就是为什么您没有看到数组(使用方括号)。
通过将响应转换移动到单独的函数中,我也使代码更清晰;通过这种方式,array_map
等函数可以将一种格式的数据转换为另一种格式。
希望它有所帮助。
答案 1 :(得分:0)
当我需要将json数据打印到客户端时,我所做的就是这个。
print_json(array('logged'=>true),true);
print_json函数将打印第一个对象中传递的对象的json格式数据。我的第二个论点决定了我通常提供的是否死亡。
function print_json($data,$die){
header('Content-Type: application/json; charset=utf8');
print_r(json_encode($data));
if ($die === true) die();
}
一块蛋糕。希望你喜欢它,这是我多年来提出的最佳方法。