解析这个JSON格式的键只列出一次,多个值

2024-05-15 05:57:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在序言中说,我只学习了Python,研究了api和JSON大约一个月,但我也先搜索了一下,没有立即发现类似的问题

我试图调用一个API(做API调用?),该API应该返回JSON,但响应如下所示:

{
  "result":[
    [
      "Facility Type",
      "Facility Name",
      "Facility Address",
      "ZIP",
      "Phone",
      "Facility Amenities / Notes",
      "Website",
      "Latitude",
      "Longitude"
      ],
      [
        "Parks",
        "Boysen Park",
        "951 S. State College Blvd.",
        "92806",
        "714-765-5191",
        "Baseball, softball, volleyball, football, soccer, tennis",
        "http://www.anaheim.net/comm_svc/parks/parkDetail.asp?dir=park_boysen",
        "33.82610235",
        "-117.889968814"
      ],
      [
        "Parks",
        "Citrus Park",
        "104 Atchison St.",
        "92805",
        "714-765-5191",
        "Volleyball, basketball",
        "http://www.anaheim.net/comm_svc/parks/parkDetail.asp?dir=park_citrus",
        "33.836792198",
        "-117.906545597"
      ]
}

这看起来不像我以前遇到的JSON响应。我习惯了这样的回答(以上面的例子):

{
  "result": [
    [
      "Facility Type":"Parks",
      "Facility Name":"Boysen Park",
      "ZIP":"92806"
    ]
  ]
}

这会让我做一些像

name1 = response['result']['Facility Name']

…把名字命名为“博伊森公园”

对于上述响应,我将如何执行此操作

(这是我获取API/JSON信息的地方:http://anaheim.opendata.junar.com/dataviews/89522/city-parks/

以下是API请求,以防其他人感兴趣:

http://anaheim.cloudapi.junar.com/api/v2/datastreams/CITY-PARKS-58641/data.ajson/?auth_key=[AUTH_KEY]&limit=5&

Tags: nameapijsonhttpparkwwwtyperesult
1条回答
网友
1楼 · 发布于 2024-05-15 05:57:04

当api做出这样的响应时,通常意味着格式基本上是固定的,您可以假设通过索引进行访问在将来不会中断。如果格式改变,他们通常会创建一个新的端点(至少在一个理智的世界里)

我要么通过索引访问并假设端点的值总是相同的,要么使用头为每个条目创建一个dict

for i, entry in enumerate(data['result']):
    if i == 0:
        continue
    # Do something with the entry
    print(entry)
    # You could make a dict
    d = dict(zip(data['result'][0], entry))
    print(d)

将为第一个条目打印以下内容:

['Parks', 'Boysen Park', '951 S. State College Blvd.', '92806', 
 '714-765-5191', 'Baseball, softball, volleyball, football, soccer, tennis', 
 'http://www.anaheim.net/comm_svc/parks/parkDetail.asp?dir=park_boysen',
'33.82610235', '-117.889968814']

{'Facility Type': 'Parks', 
 'Facility Name': 'Boysen Park', 
 'Facility Address': '951 S. State College Blvd.', 
 'ZIP': '92806', 
 'Phone': '714-765-5191', 
 'Facility Amenities / Notes': 'Baseball, softball, volleyball, football, soccer, tennis', 
 'Website': 'http://www.anaheim.net/comm_svc/parks/parkDetail.asp?dir=park_boysen', 
 'Latitude': '33.82610235', 
 'Longitude': '-117.889968814'
}

如果您使用dict键(直接)访问,您至少可以知道将来是否会发生变化。我也总是添加一些简单的健全性检查,比如。。。所有数组的大小都是9吗

从上述代码执行密钥访问将是:

d['Phone']
d['Website']

同样,您也可以假设这些字段在代码中包含什么:

entry[4]
entry[6]

。。与第一个示例相同

相关问题 更多 >

    热门问题