Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析JSON并在Python类中存储数据_Python_Json_Class - Fatal编程技术网

解析JSON并在Python类中存储数据

解析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):

这是我的JSON数据

[
{
“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,它看起来真的很有希望!