Может ли json.loads игнорировать запятую?
Как упоминалось в qaru.site/info/21176/..., вам не разрешено использовать какие-либо запятые в json. Например, этот
{
"key1": "value1",
"key2": "value2"
}
отлично, но это
{
"key1": "value1",
"key2": "value2",
}
является недопустимым синтаксисом.
По причинам, указанным в qaru.site/info/24628/..., использование конечной запятой является законным (и, возможно, поощряемым?) в коде Python. Я работаю как с Python, так и с JSON, поэтому я хотел бы быть последовательным в обоих типах файлов. Есть ли способ, чтобы json.loads
игнорировать запятые запятые?
Ответы
Ответ 1
Вы можете обернуть парсер python json с помощью jsoncomment
Комментарий JSON позволяет анализировать файлы или строки JSON с помощью:
- Одиночные и многострочные комментарии
- Строки данных с несколькими линиями
- Запятые запятые в объектах и массивах, после последнего элемента
Пример использования:
import json
from jsoncomment import JsonComment
with open(filename) as data_file:
parser = JsonComment(json)
data = parser.load(data_file)
Ответ 2
Разделите запятые, прежде чем передавать значение.
import re
def clean_json(string):
string = re.sub(",[ \t\r\n]+}", "}", string)
string = re.sub(",[ \t\r\n]+\]", "]", string)
return string