Проблема с сериализацией данных 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])