Передача php массива в python, не работает

Я пытаюсь отправить массив 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))

0

Решение

Данные, которые вы отправляете json.loads не является допустимым JSON, проверьте его. Если вы хотите преобразовать этот массив в JSON, просто используйте json.dumps как вы сделали в конце кода.

Но это не единственная ошибка. Если вы отправите этот массив в качестве параметра как sys.argv, вы не получите ожидаемого результата. Если вы отправите массив в этот скрипт, он будет обрабатывать этот параметр как строку.

Попробуйте этот подход, чтобы обработать его как список, чем в JSON.

data = eval(sys.argv[1])[0]

print (json.dumps(data))
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]