您的位置:首页 > 编程语言 > Python开发

Python实现json解析中的问题及解决方法

2014-01-08 10:41 926 查看
        介绍几个在实际json解析过程中出现的问题,例子使用上篇Python实现递归解析json

        1、eval:将字符串转换成字典

json_demo = eval(line[2])




        1)对于这样的情况会报错,如下:

NameError: name 'false' is not defined


        这是由于eval不支持null,true,false等,没办法转换为正确的None,True,False。

        解决的办法是:定义一个全局的变量,如false=False,再去调用eval就可以正常使用了。

false = False


        2、打印中文字典:

        使用上述将字符串转换成字典的方式,会引起字符编码的问题,如果字典中有中文,会这样:

't3': 'target_\xe9\xa6\x96\xe9\xa1\xb5-\xe6\xb5\xb7\xe6\x8a\xa5\xe8\xa7\x86\xe9\xa2\x91\xe7\x82\xb9\xe5\x87\xbb'


        解决方法是:首先在文件开头定义使用utf-8编码。

# -*- coding: utf8 -*-


        两种方式:

        1)使用循环:即逐层嵌套解析;

        2)使用json:

demo_line = json.dumps(json_demo,encoding="UTF-8",ensure_ascii=False)


        打印结果如下:

"t3": "target_首页-海报视频点击"


        3、格式化输出json.

        使用如下方法,就可以将json格式化为非常清晰的样子:

demo_line = json.dumps(json_demo,encoding="UTF-8",ensure_ascii=False,indent=1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: