First commit after changed file framework
这个提交包含在:
@@ -0,0 +1,32 @@
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
from _ctypes import PyObj_FromPtr
|
||||
import json, re
|
||||
|
||||
class NoIndent(object):
|
||||
""" Value wrapper. """
|
||||
def __init__(self, value):
|
||||
self.value = value
|
||||
|
||||
class MyEncoder(json.JSONEncoder):
|
||||
FORMAT_SPEC = '@@{}@@'
|
||||
regex = re.compile(FORMAT_SPEC.format(r'(\d+)'))
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(MyEncoder, self).__init__(**kwargs)
|
||||
|
||||
def default(self, obj):
|
||||
return (self.FORMAT_SPEC.format(id(obj)) if isinstance(obj, NoIndent)
|
||||
else super(MyEncoder, self).default(obj))
|
||||
|
||||
def encode(self, obj):
|
||||
format_spec = self.FORMAT_SPEC # Local var to expedite access.
|
||||
json_repr = super(MyEncoder, self).encode(obj) # Default JSON.
|
||||
for match in self.regex.finditer(json_repr):
|
||||
id = int(match.group(1))
|
||||
no_indent = PyObj_FromPtr(id)
|
||||
json_obj_repr = json.dumps(no_indent.value)
|
||||
json_repr = json_repr.replace(
|
||||
'"{}"'.format(format_spec.format(id)), json_obj_repr)
|
||||
|
||||
return json_repr
|
||||
在新工单中引用
屏蔽一个用户