当我尝试将关联数组转换为 JSON 形式 php 并传递给 Python 时遇到问题

问题描述 投票:0回答:1

我的目的是创建一个简单的关联数组并在 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,关联数组没有特殊字符或第一眼看到的东西,此时我不知道发生了什么在这里。

我真的很感谢你能给我的帮助。

我之前有一个复杂的关联数组,但我想用这个例子尝试一些更简单的东西,但我得到了相同的结果

python php json dictionary associative-array
1个回答
0
投票

通过这种方法,您可以回显 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))
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.