单引号问题
我使用带单引号的json字符串:
{
'property': 1
}
但json.loads
只接受json属性的双引号:
{
"property": 1
}
最后一个逗号问题
json.loads
不接受最后一个逗号:
{
"property": "text",
"property2": "text2",
}
解决方案:ast
解决单引号和最终逗号问题
您可以使用ast
(Python 2和3的标准库的一部分)进行此处理。这是一个例子:
import ast
# ast.literal_eval() return a dict object, we must use json.dumps to get JSON string
import json
# Single quote to double with ast.literal_eval()
json_data = "{'property': 'text'}"
json_data = ast.literal_eval(json_data)
print(json.dumps(json_data))
# Displays : {"property": "text"}
# ast.literal_eval() with double quotes
json_data = '{"property": "text"}'
json_data = ast.literal_eval(json_data)
print(json.dumps(json_data))
# Displays : {"property": "text"}
# ast.literal_eval() with final coma
json_data = "{'property': 'text', 'property2': 'text2',}"
json_data = ast.literal_eval(json_data)
print(json.dumps(json_data))
# Displays : {"property2": "text2", "property": "text"}
使用ast
将阻止您单引号和最终逗号问题。
带单引号的json.dumps
要json.dumps
轻松使用单引号,您可以使用以下代码:
import ast
import json
data = json.dumps(ast.literal_eval(json_data_single_quote))