【问题标题】:How to serialize object to json with custom fields in python如何使用python中的自定义字段将对象序列化为json
【发布时间】:2020-07-02 11:49:32
【问题描述】:

我有课

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

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

person = Person(20,'Piter')
person.__dict__

但是这样的方法会返回它:

{'person_age':20,person_name:'Piter'}

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

{'age':20,name:'Piter'}

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

【问题讨论】:

  • 为什么要在字段中添加“person_”?
  • 这只是一个例子:)
  • 那么你有对象字段到json字段的映射吗? {'person_name' : 'name', 'person_age':'age'} 之类的东西?
  • 你可以看看 jsonpickle。 stackoverflow.com/a/8614096

标签: python json django python-3.x serialization


【解决方案1】:

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)

输出

{"age": 30, "name": "Peter", "weight": 78}

注意你只需要那些你想改变的名字,在上面的例子中weight保持不变。

【讨论】:

    【解决方案2】:

    您可以使用json模块将对象序列化为json格式。

    这是一个例子:-

    import json
    class Person(object):
        def __init__(self,age,name):
            self.person_age = age
            self.person_name = name
    
    person = Person(20,'Piter')
    
    person_JSON = json.dumps(person.__dict__)
    print(person_JSON)
    

    输出:-

    '{"person_age": 20, "person_name": "Piter"}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2012-01-19
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      相关资源
      最近更新 更多