在python中解码编码的JSON结果

时间:2013-05-02 19:27:15

标签: python

我有JSON结果

  

{ “sUrlRedirect”: “HTTP://dez.loc/registration”, “sMsgTitle”:NULL, “SMSG”:“\ u041f \ u043e \ u0437 \ u0434 \ u0440 \ u0430 \ u0432 \ u043b \ u044f \ u0435 \ u043c!   \ u0420 \ u0435 \ u0433 \ u0438 \ u0441 \ u0442 \ u0440 \ u0430 \ u0446 \ u0438 \ u044f   \ u043f \ u0440 \ u043e \ u0448 \ u043b \ u0430   \ u0443 \ u0441 \ u043f \ u0435 \ u0448 \ u043d \ u043e”, “bStateError”:假}

我如何在python中解码它。结果必须像这样

  

{ “sUrlRedirect”: “HTTP://dez.loc/registration”, “sMsgTitle”:NULL, “SMSG”:“Поздравляем!   Регистрацияпрошлауспешно“,”bStateError“:false}

谢谢...

UPD

我可以不使用json模块吗?

2 个答案:

答案 0 :(得分:4)

只需使用内置的python json模块将json加载为python对象,但是你会看到你的unicode字符串被表示为'\ u041f',当你在你的应用程序中使用它们时,它应该看起来很好俄文。

>>> json_str= '{"sUrlRedirect":"http://dez.loc/registration","sMsgTitle":null,"sMsg":"\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c! \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e","bStateError":false}'
>>> import json
>>> the_dict = json.loads(json_str)
>>> the_dict
{u'sMsgTitle': None, u'bStateError': False, u'sMsg': u'\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c! \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e', u'sUrlRedirect': u'http://dez.loc/registration'}

>>> print the_dict['sMsg']
Поздравляем! Регистрация прошла успешно

答案 1 :(得分:2)

使用json module

In [1]: import json

In [2]: s = '''{"sUrlRedirect":"http://dez.loc/registration","sMsgTitle":null,"sMsg":"\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c! \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e","bStateError":false}'''

In [3]: json.loads(s)
Out[3]: 
{u'bStateError': False,
 u'sMsg': u'\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c! \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e',
 u'sMsgTitle': None,
 u'sUrlRedirect': u'http://dez.loc/registration'}

In [4]: for k, v in json.loads(s).iteritems():
            print k, v
   ...:     
sMsgTitle None
bStateError False
sMsg Поздравляем! Регистрация прошла успешно
sUrlRedirect http://dez.loc/registration

In [5]: print repr(json.loads(s)).decode("unicode-escape")
{u'sMsgTitle': None, u'bStateError': False, u'sMsg': u'Поздравляем! Регистрация прошла успешно', u'sUrlRedirect': u'http://dez.loc/registration'}