首页 > 解决方案 > 将 json 响应附加到列表

问题描述

我无法将 json 响应附加到列表中。我敢肯定这是一个简单的错误,但我花了好几个小时试图解决这个问题。. . 任何建议将不胜感激。

edd_areas = ["San Francisco-Redwood City-South San Francisco MD", 
             "Los Angeles-Long Beach-Glendale MD", 
             "Oakland-Hayward-Berkeley MD",
             "California"]

edd_year = []

edd_url = "https://data.edd.ca.gov/resource/4ezp-3bs3.json?"

for area in edd_areas:
    edd_query_url = edd_url + "area_name=" + area + "&seasonally_adjusted_y_n=N"
    edd_qresponse = requests.get(edd_query_url).json

    edd_year.append(edd_qresponse["year"])

Error: 
TypeError                                 Traceback (most recent call last)
<ipython-input-10-f3a906010984> in <module>()
     17 
     18 
---> 19     edd_year.append(edd_qresponse["year"])

TypeError: 'method' object is not subscriptable

标签: pythonjsonlistappendjupyter-notebook

解决方案


两件事情:

第一个问题在requests.get(edd_query_url).json. .json是一种方法并且不返回 json 数据,您可能试图这样做.json()并实际获取数据。

第二个问题是实际的 json 数据是一个列表,所以你不能用像“year”这样的字符串来索引它。

把所有东西放在一起:

edd_areas = ["San Francisco-Redwood City-South San Francisco MD", 
         "Los Angeles-Long Beach-Glendale MD", 
         "Oakland-Hayward-Berkeley MD",
         "California"]

edd_year = []

edd_url = "https://data.edd.ca.gov/resource/4ezp-3bs3.json?"

for area in edd_areas:
    edd_query_url = edd_url + "area_name=" + area + "&seasonally_adjusted_y_n=N"
    edd_qresponse = requests.get(edd_query_url).json() # call the function!

    edd_year.append(edd_qresponse) # just append the list since you can't index by "year"

你会得到如下所示的东西:

[[{'area_name': 'San Francisco-Redwood City-South San Francisco MD', 'area_type': 'Metropolitan Area', 'date': '1990-01-01T00:00:00.000' ...

推荐阅读