首页 > 解决方案 > 如何使用 python 从 youtube v3 api 修复 json?

问题描述

我正在使用 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 上有双引号?(或者只是没有双引号的任何东西都有双引号)。如果您提供帮助,请提前致谢。

标签: pythonjsonapiyoutube

解决方案


首先输出不是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'}}]}

推荐阅读