如何使用 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返回的持续时间?

在 C# 中使用 Youtube API V3 从频道获取视频

如何使用 Youtube v3 API 获取 Youtube 视频的 mp4 url