You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Fernet解密JSON转字典修改时TypeError问题问询

问题解决方法

错误原因

TypeError报错的核心原因是:Fernet.decrypt()返回的结果是JSON格式的字节数据,并非可以直接转换为字典的序列结构,直接调用dict()强制转换不符合语法规则。

正确实现步骤

你需要借助Python内置的json模块完成字节数据到字典的反序列化,完成字段修改后如果需要持久化存储,还要把修改后的内容重新加密写回文件,完整代码如下:

from cryptography.fernet import Fernet
import json

key = b'OKdXZnSshhlEZ6w44b0I366BZN5mb5sZQRHp5-UsCfo='
filename = 'sample.json'

def decrypt_and_modify(key, filename):
    """
    解密文件,修改指定字段后重新加密写回原文件
    """
    keyval = Fernet(key)
    # 读取加密内容
    with open(filename, "rb") as f:
        encrypted_data = f.read()
    # 解密得到JSON字节串,反序列化为字典
    decrypted_bytes = keyval.decrypt(encrypted_data)
    decrypted_data = json.loads(decrypted_bytes)
    # 修改交易对字段
    decrypted_data['RSI'][0]['TradingPair'] = 'ETHUSD'
    # (可选)如果需要把修改后的内容重新加密存回文件,添加以下代码
    modified_json_bytes = json.dumps(decrypted_data, indent=4).encode()
    new_encrypted_data = keyval.encrypt(modified_json_bytes)
    with open(filename, "wb") as f:
        f.write(new_encrypted_data)
    return decrypted_data

result = decrypt_and_modify(key, filename)
print(result)

代码说明

  • 新增导入json模块,用json.loads()将解密后的JSON字节串转换为Python字典
  • 修改完成后如果需要持久化,先把字典用json.dumps()转为JSON字符串,编码为字节后重新加密,写入原文件即可
  • 不需要存回文件的话删掉注释为可选的代码段即可

内容的提问来源于stack exchange,提问作者georgehere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:57:03