/ / json.loads () vracia namiesto slovníka objekt unicode - python, json, python-2.7, unicode, fabric

json.loads () vracia objekt unicode namiesto slovníka - python, json, python-2.7, unicode, fabric

Ja čítam v json zo súboru na vzdialenom serveri pomocou tkaniny:

from StringIO import StringIO

output = StringIO()
get(file_name, output)

output = output.getvalue()

Hodnota output je teraz:

""{\n \"status\": \"failed\", \n \"reason\": \"Record already exists.\"\n}""

Keď sa pokúsim analyzovať tento reťazec do slovníka pomocou json.loads(output) jej vráti objekt unicode u"{n "status": "failed", n "reason": "Record already exists."n}" skôr ako slovník.

Prišiel som pomerne zlou opravou, len som odovzdal nový unicode objekt do json.loads ():

json.loads(json.loads(output))

Existuje nejaký iný spôsob riešenia tohto problému?

na zdravie

odpovede:

16 pre odpoveď č. 1

Vaše údaje unikli.

json.loads(output.decode("string-escape").strip("""))

mali by ste dosiahnuť požadované výsledky:

Out[12]: {"reason": "Record already exists.", "status": "failed"}

13 pre odpoveď č. 2

Riešením by bolo zistiť, prečo je váš súbor dvojnásobne zakódovaný JSON, ale vzhľadom na to, že údaje prechádzajúce cez json.loads dvakrát je správny prístup.