Проблема с сериализацией данных json

У меня есть строка json формата '{x:y, z:[a,b,c]}' что важно, это именно строка, а не структура по типу словаря как мне обратить эту строку в сериализованный объект (в данном случае словарь), чтобы я мог работать со значениями, обращаясь к ним по ключу?


Ответы (1 шт):

Автор решения: Xander

Если у вас строка действительно без кавычек внутри, то, кажется, хорошего и короткого решения тут нет. Задачи по работе с нестандартными форматами по определению не имеют стандартных решений.

Решений тут я вижу два: писать свой парсер или расставить кавычки и воспользоваться одним из стандартных парсеров (literal_eval или json.loads)

from ast import literal_eval


data = '{x:y, z:[a,b,c]}'


def quoted(data):
    prev = ''
    for cur in data:
        if prev.isalpha() + cur.isalpha() == 1:
            yield '"'
        yield cur
        prev = cur

quoted_data = ''.join(quoted(data))

parsed_data = literal_eval(quoted_data)


print(parsed_data['z'][1])
→ Ссылка