Como imprimir números inteiros como cadeias hexadecimais usando json.dumps () em Python

Atualmente, estou usando o código a seguir para imprimir uma grande estrutura de dados

print(json.dumps(data, indent=4))

Gostaria de ver todos os números inteiros impressos em hexadecimal em vez de decimal. Isso é possível? Parece que não há como substituir o codificador existente por números inteiros. Você só pode fornecer um padrão para tipos que ainda não são tratados pela classe JSONEncoder, mas não há como substituir como ele codifica números inteiro

Eu descobri que posso substituir o comportamento de impressão inteira padrão usando sys.displayhook se eu estava executando na linha de comando, mas não estou.

Apenas para referência, a estrutura de dados é uma mistura de ditados, listas, seqüências de caracteres, entradas, etc. É por isso que fui com o json.dumps (). A única outra maneira de pensar em fazer isso é analisá-lo eu mesmo e depois reescrevendo o módulo jso

Atualizarntão acabei implementando-o com funções de serialização que apenas imprimem uma cópia da estrutura de dados original com todos os tipos inteiros convertidos em cadeias hexadecimai

def odprint(self, hexify=False):
    """pretty print the ordered dictionary"""
    def hexify_list(data):
        _data = []
        for i,v in enumerate(data):
            if isinstance(v, (int,long)):
                _data.insert(i,hex(v))
            elif isinstance(v,list):
                _data.insert(i, hexify_list(v))
            else:
                _data.insert(i, val)
        return _data

    def hexify_dict(data):
        _data = odict()
        for k,v in data.items():
            if isinstance(v, (dict,odict)):
                _data[k] = hexify_dict(v)
            elif isinstance(v, (int, long)):
                _data[k] = hex(v)
            elif isinstance(v,list):
                _data[k] = hexify_list(v)
            else:
                _data[k] = v
        return _data

    if hexify:
        print(json.dumps(hexify_dict(self), indent=4))
    else:
        print(json.dumps(self, indent=4))

Obrigado pela ajuda. Percebo que acabo fazendo um ditado a partir de um ditado padrão, mas é apenas para impressão, então é bom para o que eu precis

questionAnswers(12)

yourAnswerToTheQuestion