1. ホーム
  2. パイソン

[解決済み] [JSONデータをPythonのオブジェクトに変換するには?

2022-04-14 02:45:42

質問

JSONデータをPythonのオブジェクトに変換したいのですが、どうすればいいですか?

Facebook APIからJSONデータオブジェクトを受け取り、それをデータベースに格納したい。

Django(Python)での私の現在の見解( request.POST にはJSONが含まれています)。

response = request.POST
user = FbApiUser(user_id = response['id'])
user.name = response['name']
user.username = response['username']
user.save()

  • これは問題なく動作しますが、複雑なJSONデータ・オブジェクトはどのように扱えばよいのでしょうか?
  • このJSONオブジェクトをPythonのオブジェクトに変換して簡単に使うことができれば、もっといいと思いませんか?

どのように解決するのか?

これを試してみてはいかがでしょうか。

class User(object):
    def __init__(self, name, username):
        self.name = name
        self.username = username

import json
j = json.loads(your_json)
u = User(**j)

新しいオブジェクトを作成し、パラメータをマップとして渡すだけです。

注:ネストされたクラスに対しては機能しません。


JSONにオブジェクトを持たせることも可能です。

import json
class Address(object):
    def __init__(self, street, number):
        self.street = street
        self.number = number

    def __str__(self):
        return "{0} {1}".format(self.street, self.number)

class User(object):
    def __init__(self, name, address):
        self.name = name
        self.address = Address(**address)

    def __str__(self):
        return "{0} ,{1}".format(self.name, self.address)

if __name__ == '__main__':
    js = '''{"name":"Cristian", "address":{"street":"Sesame","number":122}}'''
    j = json.loads(js)
    print(j)
    u = User(**j)
    print(u)