解析JSON并将数据存储在Python类中 [英] Parse JSON and store data in Python Class

查看:297
本文介绍了解析JSON并将数据存储在Python类中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的JSON数据

[
    {
        "id":1,
        "name":"abc",
        "phone": "12345",
        "Charecteristics": [
            {
                "id":1,
                "name":"Good Looking",
                "rating": "Average",
            }
            {
                "id":2,
                "name":"Smart",
                "rating": "Excellent",
            }
        ]
    },
    { ... },
    { ... }
]



我在Python中有两个类

I have two Classes in Python

class Character(object):
    id = 0
    name = ""
    rating = ""

class Person(object)
    id = 0
    name = ""
    phone = ""
    Characteristics = []

我需要解析JSON数据并实例化相应的类。这些类是不言而喻的:ie Person有一个字符类数组。

I need to parse the JSON data and instantiate appropriate Classes. The Classes are self-explanatory: i.e. Person has an array of Character classes.

如何实例化这些和存储数据?

How do I instantiate these and store data appropriately?

此外,如何访问特定的人员数据?即个人的详细信息和特征

Also, how will I access particular Person data? i.e. Person's details and characteristics

推荐答案

查看漏勺;

你定义一个模式:

import colander


class Characteristic(collander.MappingSchema):
    id = colander.SchemaNode(colander.Int(),
                             validator=colander.Range(0, 9999))
    name = colander.SchemaNode(colander.String())
    rating = colander.SchemaNode(colander.String())        


class Characteristics(collander.SequenceSchema):
    characteristic = Characteristic()


class Person(colander.MappingSchema):
    id = colander.SchemaNode(colander.Int(),
                             validator=colander.Range(0, 9999))
    name = colander.SchemaNode(colander.String())
    phone = colander.SchemaNode(colander.String())
    characteristics = Characteristics()


class Data(collander.SequenceSchema):
    person = Person()

然后传入您的JSON数据结构:

then pass in your JSON data structure:

deserialized = Data.deserialize(json.loads(json_string)) 

这篇关于解析JSON并将数据存储在Python类中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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