我正在使用Beej的
Python Flickr API向Flickr询问JSON.未解析的字符串Flickr返回如下所示:
jsonFlickrApi({'photos': 'example'})
我想以字典的形式访问返回的数据,所以我有:
photos = "jsonFlickrApi({'photos': 'test'})"
# to match {'photos': 'example'}
response_parser = re.compile(r'jsonFlickrApi\((.*?)\)$')
parsed_photos = response_parser.findall(photos)
但是,parsed_photos是一个列表,而不是字典(根据类型(parsed_photos).它输出如下:
["{'photos': 'test'}"]
如何确保我的解析数据最终成为字典类型?
最佳答案 您需要使用JSON解析器将字符串表示转换为实际的Python数据结构.有关示例,请查看标准库中的
json模块的文档.
换句话说,您必须在代码末尾添加以下行
photos = json.loads(parsed_photos[0])
PS.从理论上讲,你也可以使用eval来实现相同的效果,因为JSON(几乎)与Python文字兼容,但这样做会打开一个巨大的安全漏洞.只是让你知道.