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。

祝你好运!