Napotkałem inny problem, który zwraca ten sam błąd.
Problem z pojedynczą wyceną
Użyłem łańcucha json z pojedynczymi cudzysłowami :
{
'property': 1
}
Ale json.loads
akceptuje tylko podwójne cudzysłowy dla właściwości json :
{
"property": 1
}
Ostatni problem z przecinkiem
json.loads
nie akceptuje ostatniego przecinka:
{
"property": "text",
"property2": "text2",
}
Rozwiązanie: ast
aby rozwiązać problemy z pojedynczym cytatem i ostatnim przecinkiem
Możesz użyć ast
(część standardowej biblioteki dla Pythona 2 i 3) do tego przetwarzania. Oto przykład :
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"}
Użycie ast
zapobiegnie problemom z pojedynczymi cudzysłowami i końcowymi przecinkami, interpetując JSON, tak jak słownik Pythona (więc musisz postępować zgodnie ze składnią słownika Pythona). To całkiem dobra i bezpieczna alternatywa eval()
funkcji dla struktur literalnych.
Dokumentacja Pythona ostrzegła nas przed użyciem dużego / złożonego ciągu:
Ostrzeżenie Możliwe jest zawieszenie interpretera Pythona za pomocą wystarczająco dużego / złożonego ciągu znaków ze względu na ograniczenia głębokości stosu w kompilatorze Pythona AST.
json.dumps z pojedynczymi cudzysłowami
Aby json.dumps
łatwo używać pojedynczych cudzysłowów, możesz użyć tego kodu:
import ast
import json
data = json.dumps(ast.literal_eval(json_data_single_quote))
ast
dokumentacja
ast Python 3 doc
ast Python 2 doc
Narzędzie
Jeśli często edytujesz JSON, możesz użyć CodeBeautify . Pomaga naprawić błąd składni i zminimalizować / upiększyć JSON.
Mam nadzieję, że to pomoże.
"
czy to błąd kopiowania wklejania?