【发布时间】:2019-04-05 12:24:08
【问题描述】:
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
..
.
【问题讨论】:
-
您想要哪些键作为响应,请将其添加到您的问题中
-
studentItems里面的键。 -
对不起,请您用示例输出更新您的问题
-
我已经更新了输出。我并不真正关心输出,而是正确访问元素的方式。
-
json.load返回的结构是一个嵌套的 Python 字典。要遍历键,您需要遍历 dict 本身。要仅遍历值,请遍历 dict.values()。成对地遍历键和值,遍历dict.items()。最后一个看起来像for key, value in jsonData[rollNo].items():
标签: python json python-3.x parsing