2012-03-27 4 views
2

Ниже приведен пример выполнения простого JSON, используя python2.4 версиипростой JSON свалки функция с юникодом

>>> 
>>> orig='{"key1":"Val", "key2":"val2"}' 
>>> origDict = simplejson.loads(orig) 
>>> origDict 
{'key2': 'val2', 'key1': 'Val'} 
>>> origDict['key2'] = '\xe4\xbd\xa0\xe5\xa5\xbd' 
>>> simplejson.dumps(origDict) 
'{"key2": "\\u4f60\\u597d", "key1": "Val"}' 

свалках функции является заменой строки байтов с версией Unicode. Есть ли способ сделать это не так и просто вернуть '{"key2": "\ xe4 \ xbd \ xa0 \ xe5 \ xa5 \ xbd", "key1": "Val"}'?

ответ

11

Pass ensure_ascii=False и кодировать вручную после.

+0

Спасибо! это сработало ... но что вы подразумеваете под кодировкой после. Он возвращал байтовую строку, которую я хотел. >>> simplejson.dumps (origDict, secure_ascii = False) '{"key2": "\ xe4 \ xbd \ xa0 \ xe5 \ xa5 \ xbd", "key1": "Val"}' – Kamal

+0

Предполагается вернуть 'unicode', который вам нужно будет кодировать как UTF-8 после. –

+0

Это показывает как str на моей системе! >>> origDict {'key2': '\ xe4 \ xbd \ xa0 \ xe5 \ xa5 \ xbd', 'key1': 'Val'} >>> type (simplejson.dumps (origDict, secure_ascii = False)) Это потому, что у dict нет никаких символов un utf8? – Kamal