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