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) 
上面的代码片段应该工作。