这是调用 API 返回的数据:

我在代码块里是这样写的,但是报错: console.log('Traceback (most recent call last): File ".api.py", line 16, in <module> output = api() File ".api.py", line 7, in api for i in datat["root"]["data"]["ret"]:TypeError: string indices must be integers.')
import json
datat=input['TTJSON']
my_dict={}
//遍历数组取得相对应的key和value
for i in datat["root"]["data"]["ret"]:
key=i["word_name"]
value=i["word"]
my_dict[key]=value
my_dict_json = json.dumps(my_dict, indent=4)
output=my_dict_json \n```
请问这里该怎么写才能得到数据呢?
API 请求的输出参数只能配置到 ret 数组,如果配置到
word_name和word数组的话会取不到值。目前在后台工作流里取得 ret 数组后转字典输出到各单元格里,虽然繁琐效率低点,但总算能有值了。不知道这一步能有什么优化方法吗?感谢!
直接在 API 请求的输出参数配置:
$.root.data.ret[*].words.word_name和$.root.data.ret[*].words.word吧,输出两个数组这是现在的代码及静态值测试结果图:
![1682568543191.png]()
看错误消息还是没有 json.loads
已经用过静态值测试了,改用动态值后才报错
您之前使用过代码块吗?测试的时候要用静态值。
两个办法都试过了,仍然报错:1.
![屏幕截图-2023-04-27-012655.png]()
console.log('list indices must be integers or slices, not str')调用的百度 API 实现自定义模板文字识别,暂时没有其他需求了,所以目前这个 OCR 返回的结果是固定的,遍历拿到多个"word_name"和其所对应的"word"的结果文本就行。
按您的需求,加个 json.loads 就能跑起来了。但是,这并不通用。
为什么说不通用呢,因为 OCR 的结果不是固定 wordname 的吧?所以,不建议用对象来输出最后的结果,最好用一个对象数组:
这样代码块的结果就可以用「获取多条数据」里的「从对象数组获取」转化为一个后续可以直接进行子流程处理的节点。
最后,如果你仅仅只是为了获取 OCR 的结果文本,其实在集成 API 的时候就可以处理完成了。
JSON 解析直接取:$.root.data.ret[*].word。