Ste*_*hen 9 javascript python django json node.js
从表面上看,python本身就使用了json.我能想到的唯一例外是json可以存储js函数.
这是我的问题:我需要通过终端将json传递给python文件.
为什么我应该或不应该只使用eval()?
bra*_*zzi 24
不,Python本身不使用JSON.你认为这些东西实际上是一个字典,是 Python中多种对象之一.在Python中构建字典的(简单)语法非常接近JSON,但它是偶然的.您可以这样创建字典:
a = {'a' : 2, 'b' : 3}
Run Code Online (Sandbox Code Playgroud)
你也可以用这种方式创建它:
a = dict([('a', 2), ('b', 3)]);
Run Code Online (Sandbox Code Playgroud)
那么,什么语法如此相似?好吧,JSON语法的灵感来自于数组的JavaScript语法.JavaScript语法很可能也激发了Python字典的编写方式,反之亦然.但是从不假设这三种语法--JavaScript,JSON和Python dicts - 是相同的或可互换的.
鉴于此,为什么不在eval()字典中使用转换JSON?首先,因为eval()可以在Python中执行任何操作 - 例如退出程序,删除文件,更改某些内部数据等等.因此,通过使用eval(),您可能会使自己容易受到代码注入的影响,具体取决于您使用它的方式.此外,eval()用于将JSON转换为dict假设两者的语法相同 - 这不一定是真的; 即使语法相同,它们也不可能存在.最后,有一种更好,更实用的方法来解析JSON:json模块:
>>> import json
>>> json.loads('{"a":1}')
{'a': 1}
Run Code Online (Sandbox Code Playgroud)
用它来解析你的JSON.
祝好运!
Ign*_*ams 18
JSON本身没有对象,也无法存储JavaScript函数.它的语法可能看起来类似于JavaScript文字,但尝试一直使用它只会导致痛苦.
而且不应该使用eval(); JavaScript和Python都有JSON解析器和序列化器可供使用.
| 归档时间: |
|
| 查看次数: |
10951 次 |
| 最近记录: |