Python 3 JSON / Dictionary帮助,不知道如何解析值?

时间:2017-05-25 15:11:36

标签: python dictionary

我试图将一些JSON输出写入csv文件,但首先我试图了解数据的结构。我正在使用连接到API的示例脚本,并根据指定的查询下拉数据。

使用此查询从服务器返回json:

response = api_client.get_search_results(search_id, 'application/json')
body = response.read().decode('utf-8')
body_json = json.loads(body)

如果我执行

print(body_json.keys())

我得到以下输出:

dict_keys(['events'])

因此,假设我真正感兴趣的条目是事件字典中的另一个字典是正确的吗? 如果是这样,我怎样才能访问'它们?

示例JSON数据,搜索查询返回上面的变量

{
  "events":[
    {
      "source_ip":"10.143.223.172",
      "dest_ip":"104.20.251.41",
      "domain":"www.theregister.co.uk",
      "Domain Path":"NULL",
      "Domain Query":"NULL",
      "Http Method":"GET",
      "Protocol":"HTTP",
      "Category":"NULL",
      "FullURL":"http://www.theregister.co.uk"
    },
    {
      "source_ip":"10.143.223.172",
      "dest_ip":"104.20.251.41",
      "domain":"www.theregister.co.uk",
      "Domain Path":"/2017/05/25/windows_is_now_built_on_git/",
      "Domain Query":"NULL",
      "Http Method":"GET",
      "Protocol":"HTTP",
      "Category":"NULL",
      "FullURL":"http://www.theregister.co.uk/2017/05/25/windows_is_now_built_on_git/"
    },
  ]
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

回答你的问题:是的。您的body_json已经返回了一个包含“事件”键的词典,其中包含一个词典列表。

“访问”它们的最佳方式是迭代它们。

一个非常基本的例子:

    for i in body_json['events']:
        print(i)

当然,在迭代过程中,您可以通过将print(i)替换为print(i['FullURL'])并将其保存到变量等来访问所需的特定数据。

重要的是要注意,无论何时使用返回JSON响应的API,您只需使用字典和Python数据结构。

祝你好运。

答案 1 :(得分:1)

Json.keys()仅返回与json关联的键。 这是代码:

for key in json_data.keys():
   for i in range(len(json_data[key])):
     key2 = json_data[key][i].keys()
         for k in key2:
                 print k + ":"  + json_data[key][i][k] 
  

输出:

 Http Method:GET
 Category:NULL
 domain:www.theregister.co.uk
 Protocol:HTTP
 Domain Query:NULL
 Domain Path:NULL
 source_ip:10.143.223.172
 FullURL:http://www.theregister.co.uk
 dest_ip:104.20.251.41


Http Method:GET
Category:NULL
domain:www.theregister.co.uk
Protocol:HTTP
Domain Query:NULL
Domain Path:/2017/05/25/windows_is_now_built_on_git/
source_ip:10.143.223.172
FullURL:http://www.theregister.co.uk/2017/05/25/windows_is_now_built_on_git/
dest_ip:104.20.251.41