import json
try: long = long
except NameError:
long = int
class hexint(int):
def __str__(self):
return hex(self)
class hexlong(long):
def __str__(self):
return hex(self)
class Hexifyint(object):
def __call__(self, jsonobj):
h = getattr(self, 'hexify_'+jsonobj.__class__.__name__, lambda x, y: x)
return h(jsonobj, jsonobj.__class__)
def hexify_list(self, lst, cls):
return cls(self(item) for item in lst)
hexify_tuple = hexify_list
def hexify_dict(self, dct, cls):
return cls((self(k), self(v)) for k, v in dct.items())
hexify_OrderedDict = hexify_dict
def hexify_int(self, i, cls):
return hexint(i)
def hexify_long(self, i, cls):
return hexlong(i)
data = {'test': 33, 'this': 99, 'something bigger':[1,2,3, {'a':44}]}
print(json.dumps(Hexifyint()(data)))
aW1wb3J0IGpzb24KCnRyeTogbG9uZyA9IGxvbmcKZXhjZXB0IE5hbWVFcnJvcjoKICAgICBsb25nID0gaW50CgpjbGFzcyBoZXhpbnQoaW50KToKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBoZXgoc2VsZikKCmNsYXNzIGhleGxvbmcobG9uZyk6CiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGV4KHNlbGYpCgpjbGFzcyBIZXhpZnlpbnQob2JqZWN0KToKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBqc29ub2JqKToKICAgICAgICBoID0gZ2V0YXR0cihzZWxmLCAnaGV4aWZ5XycranNvbm9iai5fX2NsYXNzX18uX19uYW1lX18sIGxhbWJkYSB4LCB5OiB4KQogICAgICAgIHJldHVybiBoKGpzb25vYmosIGpzb25vYmouX19jbGFzc19fKQoKICAgIGRlZiBoZXhpZnlfbGlzdChzZWxmLCBsc3QsIGNscyk6CiAgICAgICAgcmV0dXJuIGNscyhzZWxmKGl0ZW0pIGZvciBpdGVtIGluIGxzdCkKICAgIGhleGlmeV90dXBsZSA9IGhleGlmeV9saXN0CiAgICBkZWYgaGV4aWZ5X2RpY3Qoc2VsZiwgZGN0LCBjbHMpOgogICAgICAgIHJldHVybiBjbHMoKHNlbGYoayksIHNlbGYodikpIGZvciBrLCB2IGluIGRjdC5pdGVtcygpKQogICAgaGV4aWZ5X09yZGVyZWREaWN0ID0gaGV4aWZ5X2RpY3QKICAgIGRlZiBoZXhpZnlfaW50KHNlbGYsIGksIGNscyk6CiAgICAgICAgcmV0dXJuIGhleGludChpKQogICAgZGVmIGhleGlmeV9sb25nKHNlbGYsIGksIGNscyk6CiAgICAgICAgcmV0dXJuIGhleGxvbmcoaSkKCmRhdGEgPSB7J3Rlc3QnOiAzMywgJ3RoaXMnOiA5OSwgJ3NvbWV0aGluZyBiaWdnZXInOlsxLDIsMywgeydhJzo0NH1dfSAKcHJpbnQoanNvbi5kdW1wcyhIZXhpZnlpbnQoKShkYXRhKSkp