Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-jsondecoderror:应为包含在双引号中的属性名_Python_Json - Fatal编程技术网

Python-jsondecoderror:应为包含在双引号中的属性名

Python-jsondecoderror:应为包含在双引号中的属性名,python,json,Python,Json,我已经检查了这个问题的现有答案,但我找不到我的具体问题是什么。我试图解析我认为是有效的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_empt

我已经检查了这个问题的现有答案,但我找不到我的具体问题是什么。我试图解析我认为是有效的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内容应该如下所示:

{“您的数据”:[
{
“通道id”:“UC9CUVDOVFMPVKCIWDGGL3CQ”,
“收款日期”:“2020-08-18 20:55:18.854967”,
“发布日期”:1597784402.0,
“视频id”:“5tBnaxQKpHQ”
},
{
“channel_uid”:“UC9CuvdOVfMPvKCiwdGKL3cQ”,
“收款日期”:“2020-08-18 20:55:18.854967”,
“发布日期”:1597698002.0,
“视频id”:“7J3H8ckUaYU”
}
]}
这是有效的。请查看此网站:以及

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

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

{“您的数据”:[
{
“通道id”:“UC9CUVDOVFMPVKCIWDGGL3CQ”,
“收款日期”:“2020-08-18 20:55:18.854967”,
“发布日期”:1597784402.0,
“视频id”:“5tBnaxQKpHQ”
},
{
“通道id”:“UC9CUVDOVFMPVKCIWDGGL3CQ”,
“收款日期”:“2020-08-18 20:55:18.854967”,
“发布日期”:1597698002.0,
“视频id”:“7J3H8ckUaYU”
}
]}

因此,json.dump文件将在文件中转储正确的json内容。

这是因为您说的json加载文件对象使用:json.load(file.read())不是,因为我没有使用json.loads()作为字符串。我使用的是json.load()这需要一个文件对象。哦,对不起,你写的是什么。你的json无效。我的帖子是否回答了你的问题?我该如何在我写json的代码中以这种方式给对象命名?如果可能的话,我不想手动将此字段添加到我的文件中。你有多少个文件。我不知道抱歉,可能尝试regex抱歉,我真的不了解明白你的问题了。我的评论正确吗。我正在处理两个文件,但它们包含不同的数据。我只是想知道是否可以使用我的
json.dump()以不同的方式转储json数据
call。它正在转储它,就像我发布的没有用键命名对象数组一样。如果你有一个json对象,你想把它放在一个文件中,对吗
{[
    {
        "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"
    }
]}