使用eval将json转换为字典是个好选择吗?

9 投票
2 回答
7174 浏览
提问于 2025-04-17 01:14

我从一个远程服务器获取了一个json对象,然后把它转换成了一个python字符串,像这样:

a = eval(response)

这样做有什么问题吗?或者我有没有更好的方法?

2 个回答

2

是的,非常有用。可以使用一个 JSON 解码器来代替:

>>> from simplejson import loads
>>> loads(response)
18

使用 eval 来处理 JSON 不是个好主意:

  1. 因为 truefalsenull 这些在 JSON 中是有效的,但在 Python 中并不算合法,所以 JSON 其实不是有效的 Python 代码。

  2. eval 会执行任意的 Python 代码,这样就可能会让恶意代码有机可乘,造成安全隐患。

建议使用标准库中的 json 模块来处理 JSON:

import json
data = json.loads("[1, 2, 3]")

如果你用的 Python 版本低于 2.6,就需要自己下载这个模块。它叫 simplejson,可以从 PyPi 网站下载

撰写回答