python
July 8, 2023

Манипуляции с json данными

Рассмотрим функции для работы с форматом json. Они просты, однако названия могут вызывать путаницу. Для демонстрационных целей создадим словарь:

d = {1:[1,2,3], 'a':{2:'val'}}
d

Преобразование словаря в json строку и обратно

Функция dumps преобразует словарь в json строку:

import json

json_str = json.dumps(d)
json_str

На практике преобразование в строку вряд ли часто пригодится, а вот с json строкой вы будете сталкиваться, так как зачастую в datalake-ах объемная информация хранится в ячейках в виде json строки. Поэтому обратное преобразование вам понадобится. Его можно выполнить функцией loads:

json.loads(json_str)

Обратите внимание, что ключи в json строке могут быть только строковые в отличие от словаря Python. Поэтому, обратное преобразование сказалось на типе первого ключа.

Запись/Чтение

За это отвечают аналогичные Функции без s на конце. Так, для записи словаря в виде json файла воспользуйтесь процедурой dump:

with open('comp.json', 'wt') as f_wr:
    json.dump(d, f_wr)

Отмечу, что для сохранения структуры объекта в просмотрщике json файлов в Jupyter Lab надо сохранять в файл именно словарь, а не json строку (в этом случае в dump следует передать json.loads(jsn_str)). Для считывания файла предназначена функция load:

with open('comp.json', 'rt') as f_r:
    d_comp = json.load(f_r)
d_comp