как десериализовать json для объекта в python или django - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в python и django. я должен использовать веб-службу, и ответ веб-службы будет json следующим образом:

[{'name': 'gfile1.txt', 'length': 448, 'createdDate': '1582229671352'}, {'name': 'gfile2.txt', 'length': 86, 'createdDate': '1582229671474'}, {'name': 'soc-LiveJournal1.txt', 'length': 1080598042, 'createdDate': '1582229715227'}]

также у меня есть класс в соответствии с этим json результатом: ниже приведено определение класса:

class DataParameter:
    def __init__(self, name, size, _createdDate):
        self.filename = name
        self.filesize = size
        self.createdDate = _createdDate

что я должен сделать: я должен преобразовать вышеуказанный json в список класса DataParameter. Можете ли вы помочь мне сделать это? Спасибо

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Если я вас правильно понимаю, вы можете попробовать что-то вроде этого:

data = [
    {'name': 'gfile1.txt', 'length': 448, 'createdDate': '1582229671352'},
    {'name': 'gfile2.txt', 'length': 86, 'createdDate': '1582229671474'},
    {'name': 'soc-LiveJournal1.txt', 'length': 1080598042, 'createdDate': '1582229715227'}
]


class DataParameter:
    def __init__(self, name, size, _createdDate):
        self.filename = name
        self.filesize = size
        self.createdDate = _createdDate


new_list = []

for i in data:
    new_list.append(DataParameter(i['name'], i['length'], i['createdDate']))

print(new_list)
0 голосов
/ 06 марта 2020

Вот быстрая и грязная альтернатива

class DataParameter:
    def __init__(self, name, size, _createdDate):
        self.filename = name
        self.filesize = size
        self.createdDate = _createdDate

    @classmethod
    def from_json(cls, json_str):
        lst = []
        for dct in json:
            lst.append(cls(**json_dict))
        return lst

#Usage 
my_json = [{'name': 'gfile1.txt', 'length': 448, 'createdDate': '1582229671352'}, {'name': 'gfile2.txt', 'length': 86, 'createdDate': '1582229671474'}, {'name': 'soc-LiveJournal1.txt', 'length': 1080598042, 'createdDate': '1582229715227'}]
DataParameter.from_json(my_json)
...