我正在尝试将编码为JSON的php数组发送到python脚本,它不起作用。 这是我的代码:
<?php
$data = array('as', 'df', 'gh');
// $result = shell_exec('python /path/to/myScript.py ' . escapeshellarg(json_encode($data)));
$result = system('pythomPath/python scriptPath/myscript.py ' . escapeshellarg(json_encode($data)).' 2>&1',$result);
// Decode the result
$resultData = json_decode($result, true);
// This will contain: array('status' => 'Yes!')
var_dump($resultData);
?>
python:
import sys, json
# Load the data that PHP sent us
try:
data = json.loads(sys.argv[1])
except:
print ("ERROR")
sys.exit(1)
# Processing
result = data[0]
# Sending (to PHP)
print (json.dumps(result))
答案 0 :(得分:0)
您发送给json.loads
的数据不是有效的JSON,请检查。如果要将该数组转换为JSON,只需像在代码末尾那样使用json.dumps
。
但这不是唯一的错误。如果将此数组作为参数发送为sys.argv,则不会产生预期的结果。如果将数组发送到此脚本,它将以字符串形式处理此参数。
尝试使用此方法将其作为列表处理,而不是JSON。
data = eval(sys.argv[1])[0]
print (json.dumps(data))