在python中解析Json文件并在dialogflow中打印响应

时间:2019-06-04 06:46:44

标签: python json python-3.x

我有一个JSON文件。我想解析它并在Dialogflow中打印响应。

import json

一些JSON:

    x = '{
          "first": {"Id": "1","Zone": "South", "Product": "toy"}, 
          "second": {"Id": "2","Zone": "North", "Product": "softtoy"}, 
          "third": {"Id": "1", "Zone": "East","Product": "bat"}
         }'

解析x:

y = json.loads(x)

2 个答案:

答案 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