Я столкнулся с другой проблемой, которая возвращает ту же ошибку.
Проблема с одинарной цитатой
Я использовал строку 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 будет интерпретироваться как словарь Python (поэтому вы должны следовать синтаксису словаря Python). Это довольно хорошая и безопасная альтернатива eval()
функции для литеральных структур.
Документация Python предупреждает нас об использовании больших / сложных строк:
Предупреждение. Возможен сбой интерпретатора Python с достаточно большой / сложной строкой из-за ограничений глубины стека в компиляторе Python AST.
json.dumps в одинарных кавычках
Чтобы json.dumps
легко использовать одинарные кавычки, вы можете использовать этот код:
import ast
import json
data = json.dumps(ast.literal_eval(json_data_single_quote))
ast
документация
аст Python 3 документ
аст Python 2 документ
Инструмент
Если вы часто редактируете JSON, вы можете использовать CodeBeautify . Это поможет вам исправить синтаксическую ошибку и минимизировать / украсить JSON.
Я надеюсь, что это помогает.
"
том, что ошибка копирования и вставки?