我正在寻找一种智能解决方案来用 Javascript 处理来自 postgresql 数据库的一些 JSON 数据。我知道我需要通过 php 读取数据库并将数据作为数组传递给 Javascript。
通常你会做这样的事情:
<?php $phpArray = array('apple', 'banana', 'orange'); $jsonString = json_encode($phpArray); ?> <script> var jsonString = '<?php echo $jsonString ?>'; var jsArray = JSON.parse(jsonString); </script>
但是我的数据已经以 JSON 格式存储在 postgresql jsonb 字段中。所以我希望有一种方法可以更有效地传递数组,这样PC就不必重复相同的数据两次。
root@monitor:~ $ sudo -u postgres psql postgres=# \c monitor monitor=# SELECT * FROM "drone001"; id | data ---+----------------------------------------------------------------------------------------------- 1 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 897, "Heading": 125, "DateTime": "2023-03-19 04:14:49"} 2 | {"RX": 13.4, "Speed": 10.2, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:47"} 3 | {"RX": 13.3, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:45"} 4 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 896, "Heading": 127, "DateTime": "2023-03-19 04:14:43"} 5 | {"RX": 13.1, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:41"} [...]
这段代码不起作用,但应该大致显示我的想法。
<?php require_once 'pgsql.php'; $db = new database(); $res = $db->select('drone001'); $jsondata = array(); while ($ds = pg_fetch_object($res)) { $jsondata[] = $ds->data; } ?> <script type="text/javascript"> var jsArray = JSON.parse('<?php echo $jsondata ?>'); console.log(jsArray); </script>
如果有人能指出我正确的方向,那就太好了。
好吧,我今天感觉有点傻。我找到了解决方案,无需创建新数组,只需将所有字符串连接在一起即可。