如何使用 python 从 youtube v3 api 修复 json?
Posted
技术标签:
【中文标题】如何使用 python 从 youtube v3 api 修复 json?【英文标题】:How do I fix json from the youtube v3 api with python? 【发布时间】:2021-03-15 06:11:24 【问题描述】:我正在使用 youtube v3 api 从 youtube 频道获取 youtube 数据,并且我正在尝试使其输出的 json 有效。我已经用双引号替换了所有单引号,但我唯一的问题是 json 有一个根本没有引号的项目。 这是我的蟒蛇:
from googleapiclient.discovery import build
import json
api_key = "XXXXXXXXXX"
youtube = build('youtube', 'v3', developerKey=api_key)
request = youtube.channels().list(
part='statistics',
id="UCZuwBN1DWfgObYprETYk0eg"
)
response = request.execute()
responsestring = str(response)
replaced = responsestring.replace("'", '"')
print(replaced)
yes = json.loads(replaced)
#responsejson = json.loads(responsestring)
#^this fails because of the invalid json
这是输出的json:
"kind": "youtube#channelListResponse", "etag": "QHkx_kkeJgXRDHWbuMXUaYyQ3EQ", "pageInfo": "totalResults": 1, "resultsPerPage": 5, "items": ["kind": "youtube#channel", "etag": "WXRPwYh-SXn_vwy93t3wnzu99gM", "id": "UCZuwBN1DWfgObYprETYk0eg", "statistics": "viewCount": "3512315", "subscriberCount": "58600", "hiddenSubscriberCount": False, "videoCount": "151"]
有没有办法让它在 False 或 True 上有双引号? (或者只是没有双引号的任何东西都有双引号)。如果您能提供帮助,请提前致谢。
【问题讨论】:
【参考方案1】:首先输出不是 JSON;它是一本字典。您可以通过type(response)
进行检查。
在大多数情况下,第二个词典应该可以正常工作。如果您仍想将其转换为 JSON,则必须使用 JSON.dumps
。下面是代码
# Convert dict to JSON
response_JSON = json.dumps(response)
# try to load JSON
json_load = json.loads(response_JSON)
json_load
输出:
'kind': 'youtube#channelListResponse',
'etag': '85jouxT6VPwZltMItbtqSpICBgE',
'pageInfo': 'totalResults': 1, 'resultsPerPage': 5,
'items': ['kind': 'youtube#channel',
'etag': 'gkhgrDmYZaof9gPHKNeDSEtRiBY',
'id': 'UCZuwBN1DWfgObYprETYk0eg',
'statistics': 'viewCount': '3512365',
'subscriberCount': '58600',
'hiddenSubscriberCount': False,
'videoCount': '151']
【讨论】:
我实际上把 dict 变成了一个字符串,但我试试这个。 如果可能,请考虑生成新的 api 密钥。因为现在的人接触了互联网。 我会的,谢谢你告诉我我没看到。以上是关于如何使用 python 从 youtube v3 api 修复 json?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google.Apis.YouTube.v3 和 C# 将视频上传到 youtube?
如何使用 YouTube Data API v3 更改页面结果
如何从 Youtube API V3 中检索经过验证的频道?
如何使用objective-c格式化从youtube api v3 reuqest返回的持续时间?