如何在Python中使用自定义字段将对象序列化为json

Pik*_*chu 2 python django serialization json python-3.x

我有课

class Person(object):
    def __init__(self,age,name):
        self.person_age = age
        self.person_name = name
Run Code Online (Sandbox Code Playgroud)

我想将对象序列化为 json。我可以这样做:

person = Person(20,'Piter')
person.__dict__
Run Code Online (Sandbox Code Playgroud)

但这样的方法会返回它:

{'person_age':20,person_name:'Piter'}
Run Code Online (Sandbox Code Playgroud)

我想用我自己的字段将我的对象序列化为 json。而不是“person_age”-“年龄”。而不是“person_name”-“name”:

{'age':20,name:'Piter'}
Run Code Online (Sandbox Code Playgroud)

如果类有很多字段,该怎么办?

Dan*_*ejo 5

IIUC,您可以执行以下操作:

import json


class Person(object):
    def __init__(self, age, name, weight):
        self.person_age = age
        self.person_name = name
        self.weight = weight


p = Person(30, 'Peter', 78)
mapping = {'person_age': 'age', 'person_name': 'name'}
result = json.dumps({mapping.get(k, k): v for k, v in p.__dict__.items()})

print(result)
Run Code Online (Sandbox Code Playgroud)

输出

{"age": 30, "name": "Peter", "weight": 78}
Run Code Online (Sandbox Code Playgroud)

请注意,您只需要更改那些您想要更改的名称,在上面的示例中weight保持不变。