具有未组织的json输出的Python API

时间:2019-03-16 21:01:16

标签: python json

我是API的新手,我遵循该站点“ Flickr”上的文档,并到达了这一点,在该点上,输出几乎是一个字典,我可以使用键和值遍历该字典,但是在尝试后却遇到了错误json.loads()

import json
import requests
headers = {'User-Agent': 'Mozilla/5.0'}
query = "Hello World".lower().replace(" ", "+")
url = 'https://api.flickr.com/services/feeds/photos_public.gne?format=json&tag={}'.format(query)
res = requests.get(url, headers=headers)
#di = json.loads(res.text)

我想要的基本上是将输出转换成我可以循环通过的字典。

这是我得到的输出

>>>res.text
'jsonFlickrFeed({\n\t\t"title": "Uploads from everyone",\n\t\t"link": "https:\\/\\/www.flickr.com\\/photos\\/",\n\t\t"description": "",\n\t\t"modified": "2019-03-16T20:51:09Z",\n\t\t"generator": "https:\\/\\/www.flickr.com",\n\t\t"items": [\n\t   {\n\t\t\t"title": "ffxiv_dx11_2019-03-16_23-51-10",\n\t\t\t"link": "https:\\/\\/www.flickr.com\\/photos\\/146658428@N07\\/32455392917\\/",\n\t\t\t"media"

...

2 个答案:

答案 0 :(得分:1)

  

如果只需要原始的JSON,而没有函数包装,则将参数nojsoncallback的值设置为1。

https://www.flickr.com/services/api/response.json.html

因此使用:

url = 'https://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1&tag={}'.format(query)

答案 1 :(得分:0)

通常,您可以手动删除JavaScript函数调用:

prefix = 'jsonFlickrFeed('
assert text.startswith(prefix) and text.endswith(')')
text = text([len(prefix):-1])