我正在尝试从我的mysql数据库中为一个android项目创建一个json对象。我需要一个像这样的输出:
{
"feed": [
{
"id": 1,
"name": "National Geographic Channel",
"image": "http://api.androidhive.info/feed/img/cosmos.jpg",
"status": "\"Science is a beautiful and emotional human endeavor,\" says Brannon Braga, executive producer and director. \"And Cosmos is all about making science an experience.\"",
"profilePic": "http://api.androidhive.info/feed/img/nat.jpg",
"timeStamp": "1403375851930",
"url": null
},
{
"id": 2,
"name": "TIME",
"image": "http://api.androidhive.info/feed/img/time_best.jpg",
"status": "30 years of Cirque du Soleil's best photos",
"profilePic": "http://api.androidhive.info/feed/img/time.png",
"timeStamp": "1403375851930",
"url": "http://ti.me/1qW8MLB"
}
]
}
但我得到这样的东西:
{"feed":[{"id":"0","name":"punith","image":"","status":"ucfyfcyfffffffffffffffffffffffffffffffff","profilePic":"http:\/\/api.androidhive.info\/feed\/img\/nat.jpg","timestamp":"1403375851930","url":""}]}
一切都在一行上,id
属性不应该是引号。有什么我能做的。这是我的php文件
<?php
define('HOST','');
define('USER','');
define('PASS','');
define('DB','');
$con = mysqli_connect(HOST,USER,PASS,DB);
$sql = "select * from timeline";
$res = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('id'=>$row[0],
'name'=>$row[1],
'image'=>$row[2],
'status'=>$row[3],
'profilePic'=>$row[4],
'timestamp'=>$row[5],
'url'=>$row[6]
));
}
echo json_encode(array("feed"=>$result));
mysqli_close($con);
?>
如果输出在一行上,它会影响吗? 数据库包含与属性完全相同的列。
提前致谢
答案 0 :(得分:1)
尝试使用 JSON_PRETTY_PRINT
进行编码$json_string = json_encode($data, JSON_PRETTY_PRINT);
其中data
是您的结果数组。
在你的情况下
echo json_encode(array("feed"=>$result),JSON_PRETTY_PRINT);
从官方PHP文档中引用此Tutorial。
答案 1 :(得分:0)
引号中的ID
ID在引号中,因为它是一个字符串,而不是整数。你可以通过改变它来改变它:
array('id'=>$row[0]
到此:
array('id'=>intval($row[0])
“漂亮的印刷”
将它放在多行上只会影响可读性,但不会影响数据的计算方式 - 但你可以对它进行美化:Pretty-Printing JSON with PHP
$output = json_encode(array("feed"=>$result), JSON_PRETTY_PRINT);
echo $output;
答案 2 :(得分:0)
除了其他答案之外,包含json标题会更具语义性,我发现只包含这个也有助于json本身的外观,以便它被正确格式化而不是所有一个连续字符串。
header('Content-Type: application/json');
答案 3 :(得分:0)
对于php&gt; 5.4
$json=json_encode(array("feed"=>$result),JSON_PRETTY_PRINT);
header('Content-Type: application/json');
print_r($json);