繁体   English   中英

Python - JSONDecodeError:需要用双引号括起来的属性名称

[英]Python - JSONDecodeError: Expecting property name enclosed in double quotes

我已经检查了这个问题的现有答案,但我找不到我的具体问题是什么。 我试图解析我认为是有效的 JSON 对象,但不知何故它拒绝了它。

我使用此代码将数据从 API 响应转储到文件:

def write_video_ids_to_file(video_ids, video_data_file):
    # Create file if it doesn't exist
    file_is_empty = is_file_empty(video_data_file)
    if file_is_empty:
        open(video_data_file, 'w').close()

    with open(video_data_file, 'a') as file:
        json.dump(video_ids, file, indent=4, sort_keys=True, default=str)
        print('collecting video ids')

下面的这段代码正在运行以尝试从文件中加载该 JSON 似乎失败了:

def construct_video_id_array(video_data_file):
    with open(video_data_file, 'r') as file:
        json_data = json.load(file) # <-- Failing here

    video_ids_separate = []
    for video in json_data:
        video_ids_separate.append(video['video_id'])

    return video_ids_separate

这是我的 JSON 数据示例(大约有 8 MB,所以我不打算全部发布):

{[
    {
        "channel_id": "UC9CuvdOVfMPvKCiwdGKL3cQ",
        "collection_date": "2020-08-18 20:55:18.854967",
        "publish_date": 1597784402.0,
        "video_id": "5tBnaxQKpHQ"
    },
    {
        "channel_id": "UC9CuvdOVfMPvKCiwdGKL3cQ",
        "collection_date": "2020-08-18 20:55:18.854967",
        "publish_date": 1597698002.0,
        "video_id": "7J3H8ckUaYU"
    }
]}

我最初在开头和结尾没有{ ,所以我添加了这些。 我不确定这是否是正确的举动,但就其价值而言,无论有没有它都不起作用,只是抛出不同的错误。

您的 JSON 内容应如下所示:

{ "your_data":[
    {
        "channel_id": "UC9CuvdOVfMPvKCiwdGKL3cQ",
        "collection_date": "2020-08-18 20:55:18.854967",
        "publish_date": 1597784402.0,
        "video_id": "5tBnaxQKpHQ"
    },
    {
        "channel_id": "UC9CuvdOVfMPvKCiwdGKL3cQ",
        "collection_date": "2020-08-18 20:55:18.854967",
        "publish_date": 1597698002.0,
        "video_id": "7J3H8ckUaYU"
    }
]}

这是有效的。 查看此网站: https://www.geeksforgeeks.org/json-load-in-python/以及https://jsonlint.com/

所有 JSON 数据都需要一个键,甚至是一个列表。

您的 JSON 对象也应如下所示:

{ "your_data":[
    {
        "channel_id": "UC9CuvdOVfMPvKCiwdGKL3cQ",
        "collection_date": "2020-08-18 20:55:18.854967",
        "publish_date": 1597784402.0,
        "video_id": "5tBnaxQKpHQ"
    },
    {
        "channel_id": "UC9CuvdOVfMPvKCiwdGKL3cQ",
        "collection_date": "2020-08-18 20:55:18.854967",
        "publish_date": 1597698002.0,
        "video_id": "7J3H8ckUaYU"
    }
]}

所以文件json.dump将在文件中转储正确的 JSON 内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM