Json.vidage à défaut avec "doit être unicode, pas de str' TypeError

J'ai un fichier json qui arrive à avoir une multitude de Chinois et de Japonais (et autres langues) caractères. Je suis charger dans mon python 2.7 script à l'aide de io.open comme suit:

with io.open('multiIdName.json', encoding="utf-8") as json_data:
    cards = json.load(json_data)

- Je ajouter une nouvelle propriété pour le json, toutes les bonnes. Puis-je tenter de l'écrire à un autre fichier:

with io.open("testJson.json",'w',encoding="utf-8") as outfile:
        json.dump(cards, outfile, ensure_ascii=False)

C'est quand je reçois le message d'erreur TypeError: must be unicode, not str

J'ai essayé d'écrire le outfile comme un binaire (with io.open("testJson.json",'wb') as outfile:), mais je me retrouve avec des trucs de ce:

{"multiverseid": 262906, "name": "\u00e6\u00b8\u00b8\u00e9\u009a\u00bc\u00e7\u008b\u00ae\u00e9\u00b9\u00ab", "language": "Chinese Simplified"}

Je pensais que l'ouverture et l'écriture dans le même encodage serait suffisant, ainsi que la ensure_ascii drapeau, mais clairement pas. Je veux juste préserver les personnages qui ont existé dans le fichier avant que je lance mon script, sans tourner en \u.

Je ne suis pas sûr. Je crois que c'est parce que vous êtes à l'ouverture du pointeur de fichier en tant que utf-8 fichier, mais vous êtes un dumping string type d'objet (cards).
Ah, devrait l'ai mentionné, les cartes est un objet json: cards = json.load(json_data)
qu'est-ce que la nouvelle propriété vous ajouter? est-il possible d'écrire un un Minimum Vérifiable Exemple?

OriginalL'auteur IronWaffleMan | 2016-03-15