1

我有 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\u0443f\u0441\u043f\u003d "bStateError":false}

我如何在 python 中解码它。结果一定是这样的

{"sUrlRedirect":"http://dez.loc/registration","sMsgTitle":null,"sMsg":"Поздравляем!Регистрация прошла успешно","bStateError":false}

谢谢...

UPD

我可以在不使用json模块的情况下做到这一点吗?

4

2 回答 2

4

只需使用内置 pythonjson模块将 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']
Поздравляем! Регистрация прошла успешно
于 2013-05-02T19:31:42.870 回答
2

使用json 模块

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'}
于 2013-05-02T19:31:37.050 回答