需要将mysql数据以某种格式打印到json中
Posted
技术标签:
【中文标题】需要将mysql数据以某种格式打印到json中【英文标题】:Need to print mysql data in to json in a format 【发布时间】:2016-07-27 18:36:23 【问题描述】:我正在尝试使用 php 将 mysql 数据输入到 json 中,然后在 url 中访问它。我在 json 中获取数据,但我需要一种格式。下面是我获取 json 的 php 代码。
header('Content-Type: application/json');
include('dbhconfig.inc.php');
$response = array();
$stmt = $dbh->prepare("SELECT * FROM venderlist");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$response['results'] = $rows;
echo json_encode($response);
我的 json 数据显示如下
"results":["id":"1","vendname":"Genie Events","address":"15, Lower Ground Floor, Lajpat Nagar, Delhi - 110024, Near National Park ","contact":"(91)-11-33437065","contact_o":"(91)-11-40666522","est":"2010","website":"www.genieevents.com","email":"","zip":"110024","latitude":"1.28525","longitude":"103.775464","latlon":"1.28525,103.775464","type":"organisers",
首先它没有以正确的结构显示。目前 latlon 显示为 "latlon":"1.28525,103.775464"
但我希望结果应该是 "latlon":[1.28525,103.775464]
如何将[]
添加到我的 json 变量名 latlon。
【问题讨论】:
【参考方案1】:当然,您需要先分解这部分数据,因为它是一个字符串。您需要将它们设置为包含两个浮点值的数组单元。
全部获取后,您需要进行一些操作。
您可以先在该字符串上使用explode
和,
。这样就变成了一个数组[]
。但这并没有结束,分解后的元素仍然是字符串,因此您可以使用arrray_map
映射出所有带有floatval
的元素。
总而言之,它看起来就像这样:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as &$r) // with reference
// explode with comma, map with floatval
$r['latlon'] = array_map('floatval', explode(',', $r['latlon']));
echo json_encode(array('results' => $rows)); // json encode
【讨论】:
我也在想同样的事情。我认为您可以像这样在一行中做到这一点:echo json_encode(array('results' => array_map(function($row) return array_map('floatval', explode(',' $row['latlon'])); , $rows)));
@Ohgodwhy 哈哈,一个线性数组函数咒语,当然,它总是有一个
您的操作成功了。谢谢你。我得到了我想要的。
@AseshaGeorge 在 mysql 中使用 LIMIT OFFSET
LIMIT OFFSET 没问题,但请看页面底部显示所有记录数和页数和每页记录数。请参阅链接 sbadb.herokuapp.com/v1/bizs 。见下元以上是关于需要将mysql数据以某种格式打印到json中的主要内容,如果未能解决你的问题,请参考以下文章
如何以 JSON 格式转换 debezium 消息,以便可以将其加载到 Redshift