ich möchte ein PHP Array als JSON an ein Python-Script übergeben. Im Python Script möchte ich es dann als Liste weiter verarbeiten. Die Besonderheit ist, dass das JSON einige Sonderzeichen sowie chinesische Schriftzeichen enthält.
Nutze ich in PHP lediglich JSON encode ohne Zusatzoption und übergebe das generierte JSON an Python, sagt Python es handele sich dabei um kein valides JSON:
PHP:
Code: Alles auswählen
$unknown = $_GET['unknown'];
$unknown = json_encode($unknown);
exec("/usr/bin/python script.py 2>&1 $unknown", $out, $result);
[9] => raise ValueError("No JSON object could be decoded")
[10] => ValueError: No JSON object could be decoded
---------
Um zu erzwingen, dass ein korrektes JSON aus PHP erzeugt wird, habe ich folgendes versucht:
PHP
Code: Alles auswählen
$unknown = json_encode($unknown, JSON_FORCE_OBJECT);
exec("/usr/bin/python exporter.py 2>&1 $unknown", $out, $result);
JSON
[codebox=javascript file=Unbenannt.js]{
"0": "\u5168\u7403 [quan2 qiu2] \/entire\/total\/global\/the (whole) world\/worldwide\/\r\n",
"1": "|| \u89c6\u89c9 [shi4 jue2] \/sight\/vision\/visual\/\r\n",
"2": "|| \u9876\u7ea7 [ding3 ji2] \/top-notch\/first-rate\/\r\n",
"3": "|| \u4e0b\u4e00\u4e2a [xia4 yi1 ge5] \/the next one\/\r\n"
}[/code]
In Python versuche ich, dass JSON folgendermaßen auszulesen:
Code: Alles auswählen
import sys
import json
data = json.loads(sys.argv[1])
print data
Code: Alles auswählen
Array
(
[0] => 0:|| \u4f5c\u8005 [zuo4 zhe3] \/author\/writer\/CL:\u500b|\u4e2a[ge4]\/\r\n
[1] => Traceback (most recent call last):
[2] => File "script.py", line 10, in
[3] => data = json.loads(sys.argv[1])
[4] => File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
[5] => return _default_decoder.decode(s)
[6] => File "/usr/lib/python2.7/json/decoder.py", line 369, in decode
[7] => raise ValueError(errmsg("Extra data", s, end, len(s)))
[8] => ValueError: Extra data: line 1 column 2 - line 1 column 76 (char 1 - 75)
)