And*_*lov 1 python serialization json
class Person:
first_name = superjson.Property()
last_name = superjson.Property()
posts = superjson.Collection(Post)
class Post:
title = superjson.Property()
description = superjson.Property()
# ^^^ this approach is very similar to Django models/forms
Run Code Online (Sandbox Code Playgroud)
然后,给出这样的JSON:
{
"first_name": "John",
"last_name": "Smith",
"posts": [
{"title": "title #1", "description": "description #1"},
{"title": "title #2", "description": "description #2"},
{"title": "title #3", "description": "description #3"}
]
}
Run Code Online (Sandbox Code Playgroud)
我希望它能够构建一个Person包含其中所有内容的正确对象:
p = superjson.deserialize(json, Person) # note, root type is explicitly provided
print p.first_name # 'John'
print p.last_name # 'Smith'
print p.posts[0].title # 'title #1'
# etc...
Run Code Online (Sandbox Code Playgroud)
所以,我正在寻找这个superjson.有没有人看到类似的东西?
您使用colander以下方法定义架构:
import colander
import limone
@limone.content_schema
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()
@limone.content_schema
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()
Run Code Online (Sandbox Code Playgroud)
然后传入你的JSON数据结构:
deserialized = Data().deserialize(json.loads(json_string))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3467 次 |
| 最近记录: |