8

これは私のJSONデータです

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

私はPythonで2つのクラスを持っています

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

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

JSON データを解析し、適切なクラスをインスタンス化する必要があります。クラスは一目瞭然です。つまり、Person には Character クラスの配列があります。

これらをインスタンス化し、データを適切に保存するにはどうすればよいですか?

また、特定の Person データにアクセスするにはどうすればよいですか? すなわち、個人の詳細と特徴

4

2 に答える 2

13

ザルを見てください。これにより、JSON データ構造を Python オブジェクトに簡単に変換できます。

スキーマを定義します。

import colander


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


class Characteristics(colander.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(colander.SequenceSchema):
    person = Person()

次に、次を使用して JSON データ構造を渡します。

deserialized = Data.deserialize(json.loads(json_string)) 
于 2012-09-11T13:24:09.810 に答える