我有一个JSON文件。我想解析它并在Dialogflow中打印响应。
import json
x = '{
"first": {"Id": "1","Zone": "South", "Product": "toy"},
"second": {"Id": "2","Zone": "North", "Product": "softtoy"},
"third": {"Id": "1", "Zone": "East","Product": "bat"}
}'
y = json.loads(x)
答案 0 :(得分:0)
我认为这取决于您如何解析它。您的错误消息显示变量'i'是一个字符串。
您可以使用'json' library,并执行类似的操作来解析和使用json文件:
import json
with open(file_name) as json_file:
file_data = json.load(json_file)
print(file_data['1']['Zone'])
如果要使用for循环遍历json文件,只需将其读入字典并遍历字典即可:
with open(file_name) as json_file:
file_data = json.load(json_file)
for sub_dict_value in file_data.values():
for key, value in sub_dict_value.items():
print(key, value)
答案 1 :(得分:0)
尝试一下
import json
# some JSON:
x = '{"first": {"Id": "1","Zone": "South", "Product": "toy"}, "second": {"Id": "2","Zone": "North", "Product": "softtoy"}, "third": {"Id": "1", "Zone": "East","Product": "bat"}}'
# parse x:
y = json.loads(x)
# Get the key `Zone` under `1`
z = y['1']['Zone']
print(z)
if z == 'South':
print('Yes')
输出:
南
是的
更新:1
您的json是一个对象。它不是数组。选中此https://stackoverflow.com/a/38561016/2086966
因此, 您不必使用for循环进行迭代 。
只需使用以下
if y['1']['Zone'] == 'North':
print('No')
if y['1']['Id'] == 1:
print('Yes')
更新:2
我想这是您要搜索的
for i in y:
print(i + " Id -> " + y[i]['Id'])
print(i + " Zone -> " + y[i]['Zone'])
输出
第二个ID-> 2
第二区->北
第一个ID-> 1
第一区->南
这是工作代码:https://onlinegdb.com/rJ4Ui3m0E
更新:3
for i in y:
if y[i]['Id'] == "1":
if y[i]['Zone'] == "East":
print (y[i]['Product'])
输出
蝙蝠
这是工作代码:https://onlinegdb.com/rJ41KyER4