遇到:json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)

2024-02-18

我拿到json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)当我尝试访问我创建的 json 文件中的值时。我运行了下面的运行文件,似乎存在这个解码器问题,但是,当创建 json 文件时,我制作了加密内容,该内容应该作为字符串添加到 json 文件的字典中。有人可以帮我找出问题出在哪里吗?

错误是:

{
    "youtube": {
        "key": "D5IPLv06NGXut4kKdScNAP47AieP8wqeUINr6EFLXFs=",
        "content": "gAAAAABclST8_XmHrAAfEbgrX-r6wwrJf7IAtDoLSkahXAraPjvoXeLl3HLkuHbW0uj5XpR4_jmkgk0ICmT8ZKP267-nnjnCpw=="
    },
    "facebook": {
        "key": "YexP5dpgxwKhD8Flr6hbJhMiAB1nmzZXi2IMMO3agXg=",
        "content": "gAAAAABclST8zSRen_0sur79NQk9Pin16PZcg95kEHnFt5vjKENMPckpnK9JQctayouQ8tHHeRNu--s58Jj3IPsPbrLoeOwr-mwdU5KvvaXLY-g6bUwnIp4="
    },
    "instagram": {
        "key": "ew2bl0tKdlgwiWfhB0jjSrOZDb41F88HULCQ_21EDGU=",
        "content": "gAAAAABclST8FKcZqasiXfARRfbGPqb3pdDj4aKuxeJoRvgIPbVIOZEa5s34f0c_H3_itv5iG1O7u8vvlT8lAPTgAp3ez8OBh4T2OfBG-ObljYmIt7exi0Q="
    }
}
Traceback (most recent call last):
  File "C:\Users\YOURNAME\Desktop\randomprojects\content_key_writer.py", line 65, in <module>
    main()
  File "C:\Users\YOURNAME\Desktop\randomprojects\content_key_writer.py", line 60, in main
    data_content = json.load(data_file)
  File "C:\Users\YOURNAME\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 296, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Users\YOURNAME\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "C:\Users\YOURNAME\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\YOURNAME\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

原始代码粘贴在这里,命名为运行文件:

import sys
import os
from cryptography.fernet import Fernet
import json
import pathlib
from encipher_decipher import encrypt, decrypt, bytes_to_str, str_to_bytes 

def content_key_writer(path, filename, account, content):
    """Generate key corresponding to an account, save in json"""
    # make the path a Path object
    path = pathlib.Path(path)
    file_path = os.path.join(path, filename)

    # generate a key using Fernet
    key = Fernet.generate_key()
    # json doesn't support bytes, so convert to string
    key = bytes_to_str(key)

    # with file_path, see if the file exists
    if not os.path.exists(file_path):
        # build the dictionary to hold key and content
        data = {}
        data[account] = {}
        data[account]['key'] = key
        data[account]['content'] = encrypt(content, key)


        # if the file doesn't exist, build the new json file
        with open(file_path, 'w') as f:
            json.dump(data, f)
    else:
        # if the file does exist
        with open(file_path, 'r') as f:
            data = json.load(f)
            data[account] = {} # <--- add the account 
            data[account]['key'] = key
            data[account]['content'] = encrypt(content, key)

        os.remove(file_path) # <--- remove the file and rewrite it
        with open(file_path, 'w') as f:
            json.dump(data, f, indent=4)

def main():
    path = "C:/Users/YOURNAME/Desktop/randomprojects"
    name = 'content.json'
    account = 'youtube'
    content = 'youtubepassword'
    account2 = 'facebook'
    content2 = 'facebookpassword'
    account3 = 'instagram'
    content3 = 'instagrampassword'

    content_key_writer(path, name, account, content)
    content_key_writer(path, name, account2, content2)
    content_key_writer(path, name, account3, content3)
    new_path = os.path.join(pathlib.Path(path),name)
    with open(new_path) as data_file:
        data = data_file.read()
        print(data) 
        data_content = json.load(data_file)
    value = data_content['youtube']['content']
    print(value)

if __name__ == '__main__':
    main()

上面代码中导入的模块是encipher_decipher:

"""
Given an information, encrypt and decrypt using the given key
"""

from cryptography.fernet import Fernet
import os

def encrypt(information, key):
    """encrypt information and return as string"""
    f = Fernet(key)
    information_bytes = str_to_bytes(information) 
    encrypted_info = f.encrypt(information_bytes) #<--- returns bytes
    encrypted_info = bytes_to_str(encrypted_info) #<--- to save in json requires str not bytes
    return encrypted_info

def decrypt(information, key):
    """decrypt information and return as string"""
    f = Fernet(key)
    information_bytes = str_to_bytes(information)
    decrypted_info = f.decrypt(information_bytes) #<--- returns bytes
    decrypted_info = bytes_to_str(decrypted_info) #<--- converts to string
    return decrypted_info

def bytes_to_str(byte_stuff):
    """Convert bytes to string"""
    return byte_stuff.decode('utf-8')

def str_to_bytes(str_stuff):
    """Converts string to bytes"""
    return bytes(str_stuff, 'utf-8') # or str_stuff.encode('utf-8')

问题是这一段代码:

with open(new_path) as data_file:
  data = data_file.read()
  print(data) 
  data_content = json.load(data_file)

您正在将文件的内容读入data,打印出来,然后询问json.load()再次从文件句柄中读取。然而此时,文件指针已经位于文件末尾,因此没有更多数据,因此出现 json 错误:Expecting value

改为这样做:

with open(new_path) as data_file:
  data = data_file.read()
  print(data) 
  data_content = json.loads(data)

您已经将数据读入data,所以你可以将该字符串输入json.loads()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遇到:json.decoder.JSONDecodeError:期望值:第1行第1列(字符0) 的相关文章

  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • 如何通过 python 多处理利用所有核心

    我一直在摆弄Python的multiprocessing现在已经使用了一个多小时的功能 尝试使用并行化相当复杂的图形遍历函数multiprocessing Process and multiprocessing Manager import
  • 对使用“new”创建的数组上“map”的行为感到困惑[重复]

    这个问题在这里已经有答案了 我对结果感到困惑mapping 使用创建的数组new function returnsFourteen return 14 var a new Array 4 gt undefined x 4 in Chrome
  • 如何过滤 Pandas GroupBy 对象并获取 GroupBy 对象?

    当对 Pandas groupby 操作的结果执行过滤时 它返回一个数据帧 但假设我想执行进一步的分组计算 我必须再次调用 groupby 这似乎有点绕 有更惯用的方法吗 EDIT 为了说明我在说什么 我们无耻地从 Pandas 文档中窃取
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 是否需要关闭没有引用它们的文件?

    作为一个完全的编程初学者 我试图理解打开和关闭文件的基本概念 我正在做的一项练习是创建一个脚本 允许我将内容从一个文件复制到另一个文件 in file open from file indata in file read out file
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 使用 Python 将连续日期分组在一起

    Given dates datetime 2014 10 11 datetime 2014 10 1 datetime 2014 10 2 datetime 2014 10 3 datetime 2014 10 5 datetime 201
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • 如何获取pandas中groupby对象中的组数?

    我想知道有多少个独特的组需要执行计算 给定一个名为 groupby 的对象dfgroup 我们如何找到组的数量 简单 快速 Pandaic ngroups 较新版本的 groupby API pandas gt 0 23 提供了此 未记录的
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不

随机推荐

  • boost 属性树 put/get DBL_MAX

    我正在编写一个 ptree 在某些时候我需要放入 DBL MAX 作为默认值 当我打开生成的 xml 文件时 我看到了正确的数字 但是当我使用 ptree get 获取数字时 会引发异常 conversion of data to type
  • php imagick,如何使区域透明

    我想使 Imagick 对象内的一个区域透明 具有特定的宽度 高度和顶部位置 例如 我需要一个从第 15 像素到顶部 30 像素 x 30 像素的透明区域 但我找不到方法来实现 canvas1 new Imagick canvas1 gt
  • 如何检查内核中SMP是否启用或禁用?

    我想知道如何检查我正在运行的机器 内核是否配置为 SMP 当然 我可以查看内核 config文件并可以搜索它 但是 问题是假设我没有源代码 我将如何检查 SMP 配置 有没有proc文件来检查吗 下面说我没有多核 cat proc cpui
  • MPI_Send 和 MPI_Recv 的行为

    为什么要写这几行代码 if my rank 0 sprintf msg Hello from d of d my rank comm sz if my rank 2 sleep 2 sprintf msg Hello from d of d
  • 如何使用 Win2D 模拟 DeviceLost 事件?

    我有一个CanvasControl在 UWP 应用程序中 我注意到当我将 Surface 单独放置一段时间并且它会自动进入睡眠状态时 CanvasControl恢复后不再起作用 之前绘制的位图现在是空白的 我尝试在 Visual Studi
  • 失败后自动重新部署

    我使用 VSTS 在每次提交到特定分支后自动发布我的应用程序 任务基本上是 重新创建数据库 如果第一个没问题 gt 部署 API 和 Web 如果第二个没问题 gt 部署并重新启动一些 Windows 服务 在第二步中 有时会由于某些连接或
  • Couchbase 文档 ID 生成

    我有一个与 couchbase 6 0 集成的 Springboot 应用程序 我读过 如果一个键用 Id 注释 那么它将保存为文档 ID 并且不会成为 json 的一部分 然后我在键上一起使用了 Id和 Field 但该字段仍然没有出现在
  • 如何在 Jupyter / IPython 中覆盖之前的打印行

    我完全清楚print Blah end r 但这在 Jupyter IPython 笔记本中不起作用 因为它在终端中通常不打印任何内容 或者如果操作非常快 则会触发异常 难道这就是不可能吗 谢谢 None
  • 单独读取数据 fscanf

    我正在尝试从文件中读取数字 该文件具有以下格式 2 4 5 7 3 2 4 7 我尝试使用fscanf收集直到换行符的所有数字并将数字存储在数组中 与第二行相同 但直接从第二行开始不会再次开始并将其存储在另一个数组中 是否可以使用以下方法来
  • 如何修复错误:此类与键 tableView 的键值编码不兼容。 [复制]

    这个问题在这里已经有答案了 我做了一个应用程序Table View and Segmented Control 这是我第一次 我正在使用一些代码和一些教程 但它不起作用 当我运行我的应用程序时 它崩溃了 并在日志中显示此错误 MyAppli
  • 在 shell/bash 中的两个命令之间连接输入和输出

    我有两个 UNIX 程序 A 和 B 它们从 stdin stdout 读取和写入 我的第一个问题是如何将 A 的 stdout 连接到 B 的 stdinandB 的标准输出到 A 的标准输入 即 类似 A B而是双向管道 我怀疑我可以通
  • 为什么我的库无法在 CocoaPods 网站上扩展?

    我正在尝试通过 CocoaPods 网站访问我的图书馆信息 但无法访问 所有其他库似乎都能够扩展 我的是 MKWeatherUndergroundKit 这是我的 podspec Pod Spec new do s s name MKWea
  • Ember.js 中的路由采用什么样的单元测试解决方案? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在寻找在 Ember js 应用程序中对路由进行单元测试的最佳解决方案 我找到了两种解决方案 我希望你告诉我什么是最适合你的 这两个实现可以
  • 正则表达式匹配字符串的可选结尾

    鉴于以下情况 John Smith John Smith 123 John Smith 123 456 我想捕捉 John Smith John Smith 123 John Smith 123 456 什么样的 Java 正则表达式可以让
  • cURL 中的主机名和路径分开

    使用 cURL 时有没有办法将主机名和路径分开 我想向服务器本身发出请求 而不是向特定资源发出请求 如下 IETF 所述 Request URI 的四个选项取决于请求的性质 要求 星号 表示该请求不适用于 特定资源 但仅限于服务器本身 并且
  • QSocketNotifier:只能与以 QThread 启动的线程一起使用

    我仅使用一个非常基本的应用程序并且没有套接字或任何奇特的东西就收到以下错误 QSocketNotifier 只能与以 QThread 启动的线程一起使用 Machine Fedora 32 工作站版 Python 3 8 PyQt5 Fed
  • v4.app.Fragment 中 getLoaderManger() 和 getActivity().getSupportLoaderManager() 之间的区别

    getLoaderManager from android support v4 app Fragment and getSupportLoaderManager from android support v4 app FragmentAc
  • 如何将 XCTAssertNil 与可选结构一起使用?

    更新 2016 年 3 月 23 日我刚刚测试了下面的原始示例代码 它在 XCode 7 3 中编译得很好 看起来 XCTAssertNil 已更新以获取类型表达式 throws gt Any 因此 可能不再需要这个问题和答案 除了旧版本编
  • Google Charts API 使用 $(document).ready 方法显示空白屏幕

    我有几个函数可以使用 Google Charts API 实例化各种图表 当我在没有 jQuery 的情况下调用它们时 document ready方法 一切正常 但用这种方法 我看到的是空白屏幕 Why function drawColu
  • 遇到:json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)

    我拿到json decoder JSONDecodeError Expecting value line 1 column 1 char 0 当我尝试访问我创建的 json 文件中的值时 我运行了下面的运行文件 似乎存在这个解码器问题 但是