Есть ли способ десериализации массива json непосредственно в набор?
data.json (да, это просто массив json).
["a","b","c"]
Обратите внимание: массив json содержит уникальные элементы.
В настоящее время мой рабочий процесс следующий.
open_file = open(path, 'r')
json_load = json.load(open_file) # this returns a list
return set(json_load) # which I am then converting to a set.
Есть ли способ сделать что-то подобное?
open_file = open(path, 'r')
return json.load(open_file, **arguments) # this returns a set.
Также есть ли другой способ сделать это без модуля json? Конечно, я не первый, кому нужен набор декодеров.
Нет. Вы должны подклассифицировать один из классов JSONDecoder
модуля JSONDecoder
и переопределить метод, который создает объект, сделать это самостоятельно.
И это тоже не стоит того. json массивы действительно сопоставляются с списками в python - они имеют порядок и могут разрешать дубликаты - набор не может правильно представлять массив json. Поэтому задача json-декодера заключается не в предоставлении набора.
Преобразование - это лучшее, что вы можете сделать. Вы можете создать функцию и вызвать ее, когда вам нужно:
def json_load_set(f):
return set(json.load(f))
json
обычно это не просто массив