python对象和json对象有什么区别?
表面上看来,python本身使用json。 我能想到的唯一例外是json可以存储js函数的事实。
这是我的问题:我需要通过terminal将json传递给python文件。
为什么要或不应该使用eval()?
JSON本身没有对象,不能存储JavaScript函数。 它的语法看起来可能类似于JavaScript文字,但是试图一直使用它将只会导致痛苦。
应该没有必要使用eval()
; JavaScript和Python都提供了JSONparsing器和序列化器。
不,Python本身不使用JSON。 这个你认为是JSON的东西实际上是一个字典, 它是Python中的多种对象之一。 用Python构build字典的(简单)语法与JSON非常接近,但却是偶然的。 正如你可以这样创build一个字典:
a = {'a' : 2, 'b' : 3}
你也可以这样创build它:
a = dict([('a', 2), ('b', 3)]);
那么,这些语法如此相似呢? 那么,JSON语法就是受数组的JavaScript语法的启发 。 JavaScript语法很可能也激发了Python字典的写法,反之亦然。 但是,从不假定这三种语法(JavaScript,JSON和Python字典)是相同的或可互换的。
鉴于此,为什么你不应该使用eval()
在字典中转换JSON? 首先,因为eval()
可以在Python中做任何事情 – 例如退出程序,删除文件,更改一些内部数据等。因此,通过使用eval()
,您可能会使自己容易受到代码注入的影响 ,这取决于如何你用吧。 此外,使用eval()
将JSON转换为字典假定两者的语法是相同的 – 这不一定是真实的; 即使语法是相同的,他们也不能在将来。 最后,有一个更好,更实用的方法来parsingJSON: json
模块:
>>> import json >>> json.loads('{"a":1}') {'a': 1}
用它来parsing你的JSON。
祝你好运!