如何使用 python 修复 youtube v3 api 中的 json?
How do I fix json from the youtube v3 api with python?
我正在使用 youtube v3 api 从 youtube 频道获取 youtube 数据,我正在尝试使其输出的 json 有效。我已经用双引号替换了所有单引号,但我唯一的问题是 json 有一个项目根本没有引号。
这是我的 python:
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 带有双引号? (或者任何没有双引号的东西都有双引号)。如果您有帮助,在此先感谢。
首先输出不是JSON;它是一本字典。你可以通过 type(response)
来检查。
在大多数情况下,Second Dictionary 应该可以正常工作。如果您仍想将其转换为 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'}}]}
我正在使用 youtube v3 api 从 youtube 频道获取 youtube 数据,我正在尝试使其输出的 json 有效。我已经用双引号替换了所有单引号,但我唯一的问题是 json 有一个项目根本没有引号。 这是我的 python:
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 带有双引号? (或者任何没有双引号的东西都有双引号)。如果您有帮助,在此先感谢。
首先输出不是JSON;它是一本字典。你可以通过 type(response)
来检查。
在大多数情况下,Second Dictionary 应该可以正常工作。如果您仍想将其转换为 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'}}]}