Heim > Fragen und Antworten > Hauptteil
Ich suche nach einer intelligenten Lösung, um einige JSON-Daten aus einer Postgresql-Datenbank mithilfe von Javascript zu verarbeiten. Ich weiß, dass ich die Datenbank über PHP lesen und die Daten als Array an Javascript übergeben muss.
Normalerweise würden Sie so etwas tun:
<?php $phpArray = array('apple', 'banana', 'orange'); $jsonString = json_encode($phpArray); ?> <script> var jsonString = '<?php echo $jsonString ?>'; var jsArray = JSON.parse(jsonString); </script>
Aber meine Daten sind bereits im Postgresql-JSONB-Feld im JSON-Format gespeichert. Daher hoffe ich, dass es eine Möglichkeit gibt, das Array effizienter zu übergeben, sodass der PC dieselben Daten nicht zweimal wiederholen muss.
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"} [...]
Dieser Code funktioniert nicht, sollte aber ungefähr zeigen, was ich vorhabe.
<?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>
Es wäre großartig, wenn mir jemand den richtigen Weg weisen könnte.
P粉7448316022023-09-13 10:07:37
好吧,我今天感觉有点傻。我找到了解决方案,无需创建新数组,只需将所有字符串连接在一起即可。
<?php require_once 'pgsql.php'; $db = new database(); $res = $db->select('drone001'); while ($ds = pg_fetch_object($res)) { $jsondata .= $ds->data . ","; } $jsondata = "[" . rtrim($jsondata, ",") . "]"; ?> <script type="text/javascript"> var jsArray = JSON.parse('<?php echo $jsondata ?>'); console.log(jsArray); </script>