我想在"数据中输出没有双qoutes的时间戳:"
这是我的php代码:
$sth = mysql_query("SELECT time FROM tableName");
$rows1 = array();
$rows1['name'] = 'Timestamp';
while($rr = mysql_fetch_assoc($sth)) {
$rows1['data'][] = $rr['time'];
}
$result = array();
array_push($result,$rows1);
print json_encode($result, JSON_NUMERIC_CHECK);
这输出: [{" name":" Timestamp"," data":[" 2015-05-03 22:03:37",&# 34; 2015-05-03 22:03:41"]}]
我想要这个:[2015-05-03 22:03:37,2015-05-03 22:03:41]
答案 0 :(得分:1)
请参阅有关JSON基本类型的http://en.wikipedia.org/wiki/JSON和有关JSON日期时间表示的http://markembling.info/2011/07/json-date-time。
另外请确保您知道MySQL integer field is returned as string in PHP(因此,使用mysql_fetch_assoc从DB获取字符串值而不使用" JSON_NUMERIC_CHECK"您的所有值都将是字符串)
这取决于您的JSON阅读器,如何存储要正确读取的数据。对于文章http://nitschinger.at/Handling-JSON-like-a-boss-in-PHP中用于传输日期的PHP DateTime对象的实例。此外,我建议使用ISO8601日期格式作为日期值,因为您的日期不包括时区,并且可以在不同的读者上区别对待。
<?php
$sth = mysql_query("SELECT time FROM tableName");
$rows1 = array();
$rows1['name'] = 'Timestamp';
$tz = new DateTimeZone('UTC');
while($rr = mysql_fetch_assoc($sth)) {
$date = new DateTime($rr['time'], $tz);
$rows1['data'][] = $date->format(DateTime::ISO8601);
}
$result = array();
array_push($result,$rows1);
print json_encode($result);
但是,如果您只对引用删除日期感兴趣,可以使用以下代码(但结果不是JSON):
<?php
$sth = mysql_query("SELECT time FROM tableName");
$rows1 = array();
$rows1['name'] = 'Timestamp';
while($rr = mysql_fetch_assoc($sth)) {
$rows1['data'][] = '{' . $rr['time'] . '}';
}
$result = array();
array_push($result,$rows1);
print str_replace('}"', '', str_replace('"{', '', json_encode($result, JSON_NUMERIC_CHECK)));