Python, touple не является JSON Serializable - PullRequest
0 голосов
/ 09 июля 2019

У меня есть такие данные:

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

Кто-нибудь может помочь мне сериализовать и мой труп?

Огромное спасибо заранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...