我目前正在使用json.dumps()
将我的自定义对象序列化为JSON字符串。
j = json.dumps(object, sort_keys=True, indent=4, separators=(',', ': '),
default=lambda o: o.__dict__)
我的对象有一个名为_machines
的属性。因此,当我们将对象转换为字符串时,字符串中的一个属性称为_machines
。有没有办法告诉json.dump()
我们希望将此属性调用machines
而不是_machines
?
答案 0 :(得分:2)
您必须使用更精细的默认值:
json.dumps(object, sort_keys=True,indent=4, separators=(',', ': '),
default=lambda o: {'machines' if k == '_machines' else k: v for k, v in o.__dict__.iteritems()})
为了便于阅读,将其作为一个单独的功能可能是一个好主意:
def serialize_custom_object(o):
res = o.__dict__.copy()
res['machines'] = res['_machines']
del res['_machines']
return res
json.dumps(object, sort_keys=True,indent=4, separators=(',', ': '),
default=serialize_custom_object)
在此,serialize_custom_object()
更明确一点,即您在结果中重命名一个键。