gpt4 book ai didi

json - 机器人框架 - TypeError : string indices must be integers When Parsing Json

转载 作者:行者123 更新时间:2023-11-28 21:19:37 25 4
gpt4 key购买 nike

我正在尝试解析一个 json 数组,但出现以下错误

TypeError: string indices must be integers

JSON:

{
'locationId': 'location1',
'name': 'Name',
'type': 'Ward',
'patientId': None,
'children': [{
'locationId': 'location2',
'name': 'Name',
'type': 'Bed',
'patientId': None,
'children': [{
'locationId': 'location3',
'name': 'Name',
'type': 'HospitalGroup',
'patientId': None,
'children': None
}]
}, {
'locationId': 'location4',
'name': 'Name',
'type': 'Hospital',
'patientId': None,
'children': None
}, {
'locationId': 'location5',
'name': 'Name',
'type': 'Bed',
'patientId': None,
'children': None
}, {
'locationId': 'location6',
'name': 'Name',
'type': 'Bed',
'patientId': None,
'children': None
}, {
'locationId': 'location27',
'name': 'Name',
'type': 'Bed',
'patientId': None,
'children': None
}]
}

我正在尝试获取所有 locationId 值并将这些值一一存储在列表中。

这是我在做的事情

    @{locationIds}=  create list
:FOR ${item} IN @{Location_Json}
\ ${locationId}= set variable ${item['locationId']}
\ log ${locationId}
\ append to list ${locationIds} '${locationId}'

这个我也试过

    @{locationIds}=  create list
:FOR ${item} IN @{Location_Json}
\ ${locationId}= set variable ${item['children'][0]['locationId']}
\ log ${locationId}
\ append to list ${locationIds} '${locationId}'

但是我得到了同样的错误。

测试在这一行 ${locationId}= set variable ${item['locationId']} 上失败了

我们将不胜感激。

最佳答案

如果 var ${Location_Json} 的内容确实是您在上面放置的 json 示例,则可以解释异常“字符串索引必须是整数”。

您正在使用的 json 是一个字典(不是列表);因此,在这个循环中:

:FOR  ${item}  IN   @{Location_Json}

${item} 的值将成为字典中的键 - 例如顶级字典的locationIdname

如果您对“children”子项的“locationId”感兴趣,那就可以了——遍历“children”项:

:FOR ${item} IN @{Location_Json['children']}

在每次迭代中,${item} 将成为“children”中的子字典之一,您可以获得它的“locationId”

\    ${locationId}=  set variable  ${item['locationId']}

与您的问题无关,请不要这样做:

append to list  ${locationIds}  '${locationId}'

不要将 ${locationId} 的值放在单引号内 - 将会发生的是这些引号现在将成为列表成员的一部分。
比如说,${locationId} 的值是

location5

加上引号,它最终会变成

'location5'

我不认为这是你的目标;使用这些额外的引号,这将失败:

Should Be Equal As Strings    location5      ${locationIds[3]}   # because locationIds[3] will have the extra quotes

关于json - 机器人框架 - TypeError : string indices must be integers When Parsing Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com