Как сериализовать объект в json с настраиваемыми полями в python - PullRequest
1 голос
/ 21 марта 2020

У меня есть класс

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'}

Как это можно сделать, если в классе много полей?

Ответы [ 2 ]

2 голосов
/ 21 марта 2020

IIU C, вы можете сделать следующее:

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 остается без изменений.

0 голосов
/ 21 марта 2020

Вы можете использовать модуль 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"}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...