Я пытаюсь отправить массив php, закодированный как JSON в скрипт 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);
?>
питон:
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))
Данные, которые вы отправляете json.loads
не является допустимым JSON, проверьте его. Если вы хотите преобразовать этот массив в JSON, просто используйте json.dumps
как вы сделали в конце кода.
Но это не единственная ошибка. Если вы отправите этот массив в качестве параметра как sys.argv, вы не получите ожидаемого результата. Если вы отправите массив в этот скрипт, он будет обрабатывать этот параметр как строку.
Попробуйте этот подход, чтобы обработать его как список, чем в JSON.
data = eval(sys.argv[1])[0]
print (json.dumps(data))
Других решений пока нет …