JSON响应-
{
"001": {
"STUDENTTYPE": {
"TYPE": "Boarder"
},
"ACADEMICS": [
{
"SCI": 42,
"MTH": 22
},
{
"SCI": 49,
"MTH": 36
},
{
"SCI": 42,
"MTH": 26
}
],
"ROLL": "001",
"NAME": "Ben",
"CLASS": "XI",
"CLASSTEACHER": "Aka",
"HOME": "Katrasgarh"
},
"002": {
"STUDENTTYPE": {
"TYPE": "DayScholar"
},
"ACADEMICS": [
{
"SCI": 43,
"MTH": 24
},
{
"SCI": 43,
"MTH": 36
},
{
"SCI": 47,
"MTH": 28
}
],
"ROLL": "002",
"NAME": "Bee",
"CLASS": "XI",
"CLASSTEACHER": "Ama",
"HOME": "Kats"
}
....
}
我无法获取内部json。这是我到现在为止所做的-
jsonLocation = sys.argv[1]
jsonFile = open(jsonLocation, 'rb')
jsonData = json.load(jsonFile)
for rollNo in jsonData:
print(rollNo)
for studentItems in jsonData[rollNo]:
print(studentItems['ROLL'])
print(studentItems['NAME'])
print(studentItems['CLASS'])
print(studentItems['CLASSTEATCHER'])
print(studentItems['HOME'])
print(studentItems['STUDENTTYPETYPE']['TYPE'])
我确实得到了studentItems
中每个键的值,但在我看来这是一种笨拙的方法。我也尝试过json.dump
,但是失败了,错误是JSON是不可序列化的。
有没有更好的方法来迭代这个JSON格式?你知道吗
这是我要找的样本输出-
001:
001
Ben
XI
Aka
Katrasgarh
Boarder
42,22
49,36
42,26
002:
002
Bee
XI
Ama
Kats
..
.
关于您希望输出的外观有点不清楚,但我继续,只是将嵌套的json展平,然后将其重建为数据帧。从那里,您可以通过切片/过滤表、写入csv或执行任何您想执行的操作来访问数据。但实际上,每一行都代表
ROLL
,带有属性,以及相应的科学和数学分数,索引号从0开始。如果一些学生在ACADEMICS
键中有一个较长的列表,那么对于考试分数最低的学生,您将有一个带有null的行。你知道吗给定:
代码:
输出:
相关问题 更多 >
编程相关推荐