Может ли 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