如何将 JSON 数据转换为 Python 对象? [英] How to convert JSON data into a Python object?

查看:41
本文介绍了如何将 JSON 数据转换为 Python 对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将 JSON 数据转换为 Python 对象.

I want to convert JSON data into a Python object.

我从 Facebook API 接收 JSON 数据对象,我想将其存储在我的数据库中.

I receive JSON data objects from the Facebook API, which I want to store in my database.

我在 Django (Python) 中的当前视图(request.POST 包含 JSON):

My current View in Django (Python) (request.POST contains the 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)
    

    只需创建一个新对象,并将参数作为映射传递即可.

    Just create a new object, and pass the parameters as a map.

    注意:它不适用于嵌套类.

    Note: It does not work for nested classes.

    您也可以使用带有对象的 JSON:

    You can have a JSON with objects too:

    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)
    

    这篇关于如何将 JSON 数据转换为 Python 对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆