2016-05-12 3 views
0

Ich versuche, ein Kommandozeilenargument an eine Python-Datei übergeben und laden Sie die JSON aber Ich bekomme immer einen Wertfehler: Kein JSON-Objekt konnte decodiert werden.JSON-Argument von der Kommandozeile mit Python übergeben kann nicht entschlüsselt werden

json_test.py:

import json 
import sys 

json_dict = json.loads(sys.argv[1]) 

ich diese dann in der Befehlszeile ausgeführt werden:

python json_test.py '{"favorited": false, "contributors": null}' 

Und ich erhalte eine Fehlermeldung, auch wenn ich dies als ein Beispiel für korrekte JSON gefunden auf das Netz. Irgendwelche Ideen?

+0

Könnten Sie die genaue Fehlermeldung zur Verfügung stellen? Es funktioniert für mich. – H2O

+0

simplejson Verwendung für eine bessere Fehlermeldungen – anm

+0

@ H20 File "json_test.py", Zeile 4, in json_dict = json.laods (sys.argv [1]) Datei „C: \ Python27 \ lib \ json \ Decoders .py ", Zeile 365, in Dekodierung obj, Ende = self.raw_decode (s, inx = _w (s, 0) .end()) Datei" C: \ Python27 \ lib \ json \ decoder.py ", Zeile 383, in raw_decode raise ValueError ("Kein JSON-Objekt konnte decodiert werden") ValueError: Kein JSON-Objekt konnte dekodiert werden –

Antwort

1

Wenn Sie print sys.argv[1] ausführen, erhalten Sie wahrscheinlich '{favorited:, die das JSON-Modul nicht in ein JSON-Objekt dekodieren kann.

Versuch zu entkommen Ihre inneren Anführungszeichen, so dass es als ein Argument wie so übergeben wird:

"{"\""favorited"\"": false, "\""contributors"\"": null}" 
+0

Vielen Dank, das hat den Trick gemacht. Wissen Sie, ob es sich um ein Windows-Problem handelt, oder haben Sie Quellen, die erklären, wie/wann ich dies tun muss, während ich json übergebe? –

+0

Wenn Sie JSON aus einer Datei lesen, müssen Sie dies nicht tun (beachten Sie, dass Sie wahrscheinlich anstelle von Laoden Load verwenden würden), aber Windows-Terminal scheint wie @DavidJ. – anm