我有一个 Python 脚本,它使用 print
将一堆文本输出到 PHP。和 shell_exec()
.我还必须在两者之间发送一个字典,以存储一些脚本信息。这是我的代码的简化版本:
Python
import json
# Lots of code here
user_vars = {'money':player.money}
print(user_vars)
print(json.dumps(user_vars))
输出(在PHP中):
{'money': 0} {"money": 0}
所以同样的事情,除了 JSON 有双引号。
PHP
如果我想使用 JSON(
print(json.dumps(user_vars))
,它输出 {"money": 0}
,注意双引号)来传输数据,这是我将使用的代码:<?php
$result = shell_exec('python JSONtest.py');
$resultData = json_decode($result, true);
echo $resultData["money"];
?>
我有两个问题:
print(user_vars)
代替print(json.dumps(user_vars))
, 或相反亦然? user_vars
/json.dumps(user_vars)
无需在最终的 PHP 页面中看到它,而不必将它们转储到实际中 .json
文件?还是我以错误的方式解决这个问题? 我的代码基于问题 here .
最佳答案
这段代码可以解决问题。
Python
import json
data = {'fruit':['oranges', 'apples', 'peaches'], 'age':12}
with open('data.json', 'w') as outfile:
json.dump(data, outfile)
PHP
<?php
$string = file_get_contents("data.json");
$json_a = json_decode($string, true);
echo $json_a['age']; # Note that 'fruit' doesn't work:
# PHP Notice: Array to string conversion in /var/www/html/JSONtest.php on line 4
# Array
?>
此方法仅适用于字符串,但它确实解决了我的问题,而且我可以不使用列表/数组来解决问题。
关于php - 如何在 Python 和 PHP 之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441197/