循环解析 JSON devOps API
Parse JSON devOps API in a loop
我有一个 json 文件(部分在下面):
{
"count": 12,
"value": [
{
"id": 1,
"workItemId": 1,
"rev": 1,
"fields": {
"System.Id": {
"newValue": 1
},
"System.AreaId": {
"newValue": 2
},
{
"id": 2,
"workItemId": 2,
"rev": 2,
"fields": {
"System.Rev": {
"oldValue": 1,
"newValue": 2
},
"System.State": {
"oldValue": "New",
"newValue": "Qualification"
}
}}}}}
我需要使用以下循环检索 System.State:
for i in json['value']:
for item in i['fields']:
print(i['System.State']['newValue'])
不幸的是,有一个 KeyError 'fields',我不知道为什么。
它只适用于第一个元素:
json['value'][0]['fields']['System.State']['newValue']
首先这个问题不是关于解析json。其次,在 json["value"]["fields"]
内部迭代时,例如;
for i in json['value']:
for item in i['fields']:
print(i['System.State']['newValue']) # error getting raised in this line
有 4 个不同的词典,其中只有一个有 ["System.State"] 键,所以当键不存在时,会引发错误。
要克服这个问题,您只需添加一个简单的控制语句即可;
for i in json['value']:
for item in i['fields']:
if 'System.State' in i:
print(i['System.State']['newValue'])
已编辑:
在检查了 dict 之后,我看到了几个缺少的括号。 json数据可以这样;
{
"count": 12,
"value": [
{
"id": 1,
"workItemId": 1,
"rev": 1,
"fields": {
"System.Id": {
"newValue": 1
},
"System.AreaId": {
"newValue": 2
},
}
},
{
"id": 2,
"workItemId": 2,
"rev": 2,
"fields": {
"System.Rev": {
"oldValue": 1,
"newValue": 2
},
"System.State": {
"oldValue": "New",
"newValue": "Qualification"
}
}
}
]
}
我的解决方案:
fields=[]
for i in json['value']:
if 'fields' in i:
value.append(i['fields'])
for i in fields:
if 'System.State' in i:
print(i['System.State']['newValue'])
我有一个 json 文件(部分在下面):
{
"count": 12,
"value": [
{
"id": 1,
"workItemId": 1,
"rev": 1,
"fields": {
"System.Id": {
"newValue": 1
},
"System.AreaId": {
"newValue": 2
},
{
"id": 2,
"workItemId": 2,
"rev": 2,
"fields": {
"System.Rev": {
"oldValue": 1,
"newValue": 2
},
"System.State": {
"oldValue": "New",
"newValue": "Qualification"
}
}}}}}
我需要使用以下循环检索 System.State:
for i in json['value']:
for item in i['fields']:
print(i['System.State']['newValue'])
不幸的是,有一个 KeyError 'fields',我不知道为什么。
它只适用于第一个元素:
json['value'][0]['fields']['System.State']['newValue']
首先这个问题不是关于解析json。其次,在 json["value"]["fields"]
内部迭代时,例如;
for i in json['value']:
for item in i['fields']:
print(i['System.State']['newValue']) # error getting raised in this line
有 4 个不同的词典,其中只有一个有 ["System.State"] 键,所以当键不存在时,会引发错误。 要克服这个问题,您只需添加一个简单的控制语句即可;
for i in json['value']:
for item in i['fields']:
if 'System.State' in i:
print(i['System.State']['newValue'])
已编辑: 在检查了 dict 之后,我看到了几个缺少的括号。 json数据可以这样;
{
"count": 12,
"value": [
{
"id": 1,
"workItemId": 1,
"rev": 1,
"fields": {
"System.Id": {
"newValue": 1
},
"System.AreaId": {
"newValue": 2
},
}
},
{
"id": 2,
"workItemId": 2,
"rev": 2,
"fields": {
"System.Rev": {
"oldValue": 1,
"newValue": 2
},
"System.State": {
"oldValue": "New",
"newValue": "Qualification"
}
}
}
]
}
我的解决方案:
fields=[]
for i in json['value']:
if 'fields' in i:
value.append(i['fields'])
for i in fields:
if 'System.State' in i:
print(i['System.State']['newValue'])