簡體   English   中英

用python解碼json字典

[英]decoding json dictionary with python

我已經編寫了一個腳本來從 API 獲取數據並返回它,但是現在我需要解析該數據,這是 json 數據的示例,其中包含一些我希望提取的字典值。

{'results': [{'icpsr_id': 21133,
   'twitter_id': 'RepToddYoung',
   'thomas_id': '02019',
   'term_end': '2017-01-03',
   'office': '1007 Longworth House Office Building',
   'gender': 'M',
   'phone': '202-225-5315',

這是我編寫的用於提取和解析 json 數據文件的代碼。 誰能告訴我它有什么問題? 我仍然返回從“結果”詞典的全部價值,這意味着它就像代碼什么也沒有做,我仍然得到完整的字典,它不會被解析,而不是只有“twitter_id”和“辦公室”

import requests
import json

def call():
    payload = {'apikey':'my_apikey', 'zip':'74120'}
    bas_url = 'http://openstates.org/api/v1//legislators/?state=ok'
    r = requests.get(bas_url, params = payload)
    grab = r.json()
    return grab
    jsonResponse=json.loads(decoded_response)
    jsonData = jsonResponse["results"]
    for item in jsonData:
        chamber = item.get("twitter_id")
        last_name = item.get("office")

聽起來你想要這樣的東西:

def call():
    payload = {'apikey':'my_apikey', 'zip':'74120'}
    bas_url = 'http://openstates.org/api/v1//legislators/?state=ok'
    r = requests.get(bas_url, params = payload)
    grab = r.json()
    jsonData = grab["results"]
    return [{key: value for key, value in result.items() if key in ("twitter_id", "office")} for result in jsonData]

好的,查看 requests 模塊的在線文檔,我看到調用r.json()將為您進行 JSON 解析,並返回一個 Python dict。 您發布的內容是該 dict 的輸出,因此 JSON 部分已經為您處理好了。

一旦您使用json_response = r.json()將數據提取到 json_response ,此代碼應該適用於 Python 2 和 Python 3:

extracted_values = []
json_data = json_response['results']
for item in json_data:
    subitem_dict = {}
    for key in 'twitter_id office'.split():
        subitem_dict[key] = item.get(key) # will give None if key does not exist
    extracted_values.append(subitem_dict)

print(extracted_values)

印刷:

[{'twitter_id': 'RepToddYoung', 'office': '1007 Longworth House Office Building'}, 
 {'twitter_id': 'SenDonnelly', 'office': '720 Hart Senate Office Building'}, 
 {'twitter_id': 'SenDanCoats', 'office': '493 Russell Senate Office Building'}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM