使用eval将json转换为字典是个好选择吗?
我从一个远程服务器获取了一个json对象,然后把它转换成了一个python字符串,像这样:
a = eval(response)
这样做有什么问题吗?或者我有没有更好的方法?
2 个回答
2
是的,非常有用。可以使用一个 JSON 解码器来代替:
>>> from simplejson import loads
>>> loads(response)
18
使用 eval
来处理 JSON 不是个好主意:
因为
true
、false
和null
这些在 JSON 中是有效的,但在 Python 中并不算合法,所以 JSON 其实不是有效的 Python 代码。eval
会执行任意的 Python 代码,这样就可能会让恶意代码有机可乘,造成安全隐患。
建议使用标准库中的 json
模块来处理 JSON:
import json
data = json.loads("[1, 2, 3]")
如果你用的 Python 版本低于 2.6,就需要自己下载这个模块。它叫 simplejson
,可以从 PyPi 网站下载。