У меня есть такие данные:
mydata = {"tk_kval": "(1, \'myname\')", "tk_kgroup": "----", "tk_descr": "Execute SQL", "t_owner": 1}
Когда я пытаюсь сделать:
json.dumps(mydata)
я получил ошибку:
TypeError: ProgrammingError ('синтаксическая ошибка в или рядом с "myname" \ nLINE 1: ... cute SQL \ ", \" t_owner \ ": 1}, {\" tk_kval \ ": \" (1, \ 'myname \') \ "... \ n ^ \ n ',) не сериализуемо в формате JSON
Я думаю, что проблема в том (1, \ 'myname \'), поэтому я создаю такой класс:
class MultiDimensionalArrayEncoder(json.JSONEncoder):
def encode(self, obj):
def hint_tuples(item):
if isinstance(item, tuple):
return {'__tuple__': True, 'items': item}
if isinstance(item, list):
return [hint_tuples(e) for e in item]
if isinstance(item, dict):
return {key: hint_tuples(value) for key, value in item.items()}
else:
return item
return super(MultiDimensionalArrayEncoder, self).encode(hint_tuples(obj))
def hinted_tuple_hook(obj):
if '__tuple__' in obj:
return tuple(obj['items'])
else:
return obj
тогда я делаю:
enc = MultiDimensionalArrayEncoder()
ttk_list_enc = enc.encode(ttk_list)
json.dumps(ttk_list_enc, default=hinted_tuple_hook)
но у меня та же ошибка:
TypeError: ProgrammingError ('синтаксическая ошибка в или рядом с "myname" \ nLINE 1: ... cute SQL \ ", \" t_owner \ ": 1}, {\" tk_kval \ ": \" (1, \ 'myname \') \ "... \ n ^ \ n ',) не сериализуемо в формате JSON
Кто-нибудь может помочь мне сериализовать и мой труп?
Огромное спасибо заранее