将json转换成dval与eval是一个很好的选择吗?

yas*_*sar 9 python json dictionary eval

我从远程服务器获取一个json对象,并将其转换为python字符串,如下所示:

a = eval(response)
Run Code Online (Sandbox Code Playgroud)

这有什么愚蠢的,或者我有更好的选择吗?

Ned*_*der 15

使用eval不是处理JSON的好方法:

  1. JSON甚至不是有效的Python,因为true,falsenull.

  2. eval 将执行任意Python代码,因此您可能会恶意注入代码.

请使用json标准库中提供的模块:

import json
data = json.loads("[1, 2, 3]")
Run Code Online (Sandbox Code Playgroud)

如果您使用的是2.6以上的Python版本,则需要自行下载该模块.它被调用simplejson,可以从PyPi下载.

  • @NasBanov:实际上,你的eval并不安全.尝试使用此值str:str ="""[n代表n} {} .__ class __.__ bases __ [ - 1] .__ subclasses __()if n .__ name __ ="Quitter"] [0](0)() """ (4认同)