JSON中的单引号和双引号

我的代码:

import simplejson as json s = "{'username':'dfdsfdsf'}" #1 #s = '{"username":"dfdsfdsf"}' #2 j = json.loads(s) 

#1定义是错误的

#2定义是正确的

我听说在Python中,单引号可以互换,任何人都可以解释这个吗?

JSON语法不是Python语法。 JSON需要双引号的string。

你可以使用ast.literal_eval()

 >>> import ast >>> s = "{'username':'dfdsfdsf'}" >>> ast.literal_eval(s) {'username': 'dfdsfdsf'} 

您可以通过以下双引号转储JSON:

 from json import dumps #mixing single and double quotes data = {'jsonKey': 'jsonValue',"title": "hello world"} jsonString = json.dumps(data) #get string with all double quotes 

demjson也是一个很好的包来解决json语法不好的问题:

 pip install demjson 

用法:

 from demjson import decode bad_json = "{'username':'dfdsfdsf'}" python_dict = decode(bad_json) 

编辑:

demjson.decode是损坏的json的一个很好的工具,但是当你处理json的大数据时, ast.literal_eval是一个更好的匹配,而且更快。

如上所述,JSON不是Python语法。 你需要在JSON中使用双引号。 它的创build者(in)以使用允许的语法的严格子集来减轻程序员的认知过载而出名。

知道JSONstring中没有单引号是非常有用的 。 说,你复制并从浏览器控制台/任何东西粘贴。 然后,你可以input

 a = json.loads('very_long_json_string_pasted_here') 

如果它也使用单引号,这可能会破坏。

 import json data = json.dumps(list) print(data) 

上面的代码片段应该工作。