我的目的是创建一个简单的关联数组并在 PHP 中将其编码为 JSON,之后我想传递给 python 脚本并将此信息解码到字典中,因此我创建了这个简单的测试:
这是我的 PHP 脚本:
// DICCIONARIO DE PRUEBA
$dicSample = [
"dogBreed" => "Golden Retriever",
"name" => "Mia"
];
// Codificar json primero para evaluarlo
$jsonCon = json_encode($dicSample);
//Ejecutar script
$output = shell_exec("python prueba.py " . escapeshellarg($jsonCon));
echo $output;
echo "<pre>";
echo $jsonCon;
echo "</pre>";
?>
这是 Python 脚本,为了更具描述性,我编写了控制结构来读取 JSON 未正确传递的错误:
import sys, json
try:
consultaSQL = json.loads(sys.argv[1])
print(consultaSQL)
except json.JSONDecodeError as e:
print("Error al decodificar el JSON:", str(e))
当我在浏览器中执行 PHP 脚本时,我得到以下输出:
Error al decodificar el JSON: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
{"dogBreed":"Golden Retriever","name":"Mia"}
正如您所看到的,所有过程都返回给我一条错误消息和从 PHP 编码的 JSON,关联数组没有特殊字符或第一眼看到的东西,此时我不知道发生了什么在这里。
我真的很感谢你能给我的帮助。
我之前有一个复杂的关联数组,但我想用这个例子尝试一些更简单的东西,但我得到了相同的结果
通过这种方法,您可以回显 JSON 字符串并将其通过管道传输到 Python 脚本,然后从 stdin 读取。这种方法对于在脚本之间传递复杂数据更可靠。
PHP 脚本:
<?php
// DICCIONARIO DE PRUEBA
$dicSample = [
"dogBreed" => "Golden Retriever",
"name" => "Mia"
];
// Codificar json primero para evaluarlo
$jsonCon = json_encode($dicSample);
//Ejecutar script
$command = "echo " . escapeshellarg($jsonCon) . " | python prueba.py";
$output = shell_exec($command);
echo $output;
echo "<pre>";
echo $jsonCon;
echo "</pre>";
?>
Python 脚本:
import sys, json
try:
consultaSQL = json.load(sys.stdin)
print(consultaSQL)
except json.JSONDecodeError as e:
print("Error al decodificar el JSON:", str(e))