Warm tip: This article is reproduced from serverfault.com, please click

其他-如何使用python从youtube v3 api修复json?

(其他 - How do I fix json from the youtube v3 api with python?)

发布于 2020-12-03 08:39:31

我正在使用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带有双引号?(或者只是没有双引号的任何东西都带有双引号)。在此先感谢你的帮助。

Questioner
HoneyPoop
Viewed
11
venky__ 2020-12-03 16:50:11

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