解析JSON并在Python类中存储数据
这是我的JSON数据解析JSON并在Python类中存储数据,python,json,class,Python,Json,Class,这是我的JSON数据 [ { “id”:1, “名称”:“abc”, “电话”:“12345”, “特征学”:[ { “id”:1, “姓名”:“好看”, “评级”:“平均”, } { “id”:2, “名称”:“智能”, “评级”:“优秀”, } ] }, { ... }, { ... } ] 我有两个Python类 class Character(object): id = 0 name = "" rating = "" class Person(object):
[
{
“id”:1,
“名称”:“abc”,
“电话”:“12345”,
“特征学”:[
{
“id”:1,
“姓名”:“好看”,
“评级”:“平均”,
}
{
“id”:2,
“名称”:“智能”,
“评级”:“优秀”,
}
]
},
{ ... },
{ ... }
]
我有两个Python类
class Character(object):
id = 0
name = ""
rating = ""
class Person(object):
id = 0
name = ""
phone = ""
Characteristics = []
我需要解析JSON数据并实例化适当的类。这些类是自解释的:即Person有一个字符类数组
如何实例化这些数据并适当地存储数据
此外,我将如何访问特定的个人数据?i、 e.个人的细节和特征看看;这使得将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))
如果您是用python 3.6+编写的,最简单的方法可能是使用:
从棉花糖\u数据类导入数据类
从输入导入列表开始
@数据类
类别字符:
id:int
姓名:str
评级:str
@数据类
班长:
id:int
姓名:str
电话:str
特征:列表[字符]
my_person=person.Schema().load(json_str)
类似的问题:请注意,您的JSON示例格式不正确。除了您使用的奇数引号外,Character
对象中也不能有多个Character
键;请注意,我已经将这组人和这组特征都变成了列表(通常是这样)。非常感谢@MartijnPieters@Tichodroma当前位置下次我一定会做更多的研究。。很抱歉,我在最初的几次尝试中没有发现类似的问题。谢谢…-)我是Python新手,但必须使用web服务,所以使用dJango。。请考虑我业余时间。还有一个问题……那可不容易。如果它为特定的JSON字符串生成python类,那将非常容易。@Vanuan有什么可以做到的吗?@Jonathan最接近的是这个,但它仍然需要为每个字段指定类型。谢谢@Vanuan,它看起来真的很有希望!