将base64编码的数据序列化为JSON

2024-03-12

我正在编写一个脚本来自动生成演示数据,并且需要在 JSON 中序列化一些数据。该数据的一部分是图像,因此我将其编码为 base64,但是当我尝试运行脚本时,我得到:

Traceback (most recent call last):
  File "lazyAutomationScript.py", line 113, in <module>
    json.dump(out_dict, outfile)
  File "/usr/lib/python3.4/json/__init__.py", line 178, in dump
    for chunk in iterable:
  File "/usr/lib/python3.4/json/encoder.py", line 422, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "/usr/lib/python3.4/json/encoder.py", line 396, in _iterencode_dict
    yield from chunks
  File "/usr/lib/python3.4/json/encoder.py", line 396, in _iterencode_dict
    yield from chunks
  File "/usr/lib/python3.4/json/encoder.py", line 429, in _iterencode
    o = _default(o)
  File "/usr/lib/python3.4/json/encoder.py", line 173, in default
    raise TypeError(repr(o) + " is not JSON serializable")
  TypeError: b'iVBORw0KGgoAAAANSUhEUgAADWcAABRACAYAAABf7ZytAAAABGdB...
     ...
   BF2jhLaJNmRwAAAAAElFTkSuQmCC' is not JSON serializable

据我所知,base64 编码的任何内容(在本例中为 PNG 图像)只是一个字符串,因此它应该会给序列化带来问题。我缺少什么?


您必须小心数据类型。

如果读取二进制图像,您将获得字节。 如果您以 Base64 编码这些字节,您将再次获得...字节! (参见有关的文档b64编码 https://docs.python.org/3/library/base64.html#base64.b64encode)

json 无法处理原始字节,这就是您收到错误的原因。

我刚刚写了一些例子,附有评论,希望对您有所帮助:

from base64 import b64encode
from json import dumps

ENCODING = 'utf-8'
IMAGE_NAME = 'spam.jpg'
JSON_NAME = 'output.json'

# first: reading the binary stuff
# note the 'rb' flag
# result: bytes
with open(IMAGE_NAME, 'rb') as open_file:
    byte_content = open_file.read()

# second: base64 encode read data
# result: bytes (again)
base64_bytes = b64encode(byte_content)

# third: decode these bytes to text
# result: string (in utf-8)
base64_string = base64_bytes.decode(ENCODING)

# optional: doing stuff with the data
# result here: some dict
raw_data = {IMAGE_NAME: base64_string}

# now: encoding the data to json
# result: string
json_data = dumps(raw_data, indent=2)

# finally: writing the json string to disk
# note the 'w' flag, no 'b' needed as we deal with text here
with open(JSON_NAME, 'w') as another_open_file:
    another_open_file.write(json_data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将base64编码的数据序列化为JSON 的相关文章

  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • Elasticsearch:预期的字段名称,但得到了 START_OBJECT

    我一直在尝试运行以下查询 但每次运行时都会收到以下错误 nested ElasticsearchParseException Expected field name but got START OBJECT field value fact
  • jolt变换后json对象的排序

    Input The input json object 所需输出 Event1 Value1 Event2 collection of json objects Event3 The input json object 所以基本上输入 js
  • Pandas 中的 Groupby、转置和追加?

    我有一个数据框 如下所示 每个用户有10条记录 现在 我想创建一个如下所示的数据框 userid name1 name2 name10 这意味着我需要反转该列的每 10 条记录name并附加到新的数据框 那么 它是如何做到的呢 有什么办法可
  • 在 ASP.NET Core 2.0 Web Api 中返回“原始”json

    AFAIK 在 ASP NET Core Web Api 中返回数据的标准方法是使用IActionResult并提供例如一个OkObject结果 这对于对象来说效果很好 但是如果我以某种方式获得了一个 JSON 字符串 并且我只想将该 JS
  • 从bigquery中的json字符串中提取键和值,其中json文档中没有指定的键

    我在 bigquery 中有一个表 其中有对象 对于每个对象 我都有一些字符串化的 json 在 json 中 示例行如下所示 ObjectID 1984931229 indexed abstract IndexLength 123 Inv
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • json_encode 返回 NULL?

    由于某种原因 项目 描述 返回NULL使用以下代码 这是我的数据库的架构 CREATE TABLE staff id int 11 NOT NULL AUTO INCREMENT name longtext COLL
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • SQL查询json字典数据

    我的表中的 CLOB 字段包含 JSON 如下所示 a value1 b value2 c value3 我正在尝试编写一个 SQL 查询来返回一个包含键和值字段的表 如下所示 key value a value1 b value2 c v
  • 如何将字符串转换为浮点数? [复制]

    这个问题在这里已经有答案了 我需要转换变量 pi string 3 1415926 变成一个浮子 这是我正在处理的事情 你的线路应该是pi float float pi string float pi string 是一个浮点值 你不能给它
  • 编码:类型错误:write() 参数必须是 str,而不是 bytes

    我对 python 有初步的了解 但不清楚处理二进制编码问题 我正在尝试运行 firefox webextensions 示例中的示例代码 其中 python 脚本发送由 javascript 程序读取的文本 我不断遇到编码错误 蟒蛇代码是
  • 使用 os.write 打印字体图标

    在 Windows 10 上使用 Python 3 8 3 我的终端 使用nerdfont https github com ryanoasis nerd fonts tree master patched fonts Agave有图标的
  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel

随机推荐

  • Flex/Bison IDE? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个良好的开发环境 可以在 Flex 或 Bison 或两者上工作 是否有任何 IDE 具有
  • 使用 ng-if 来保护 Angular js 页面上的不同内容

    I have div1 and div2 如果用户是管理员 我希望他看到这两个 如果用户是简单用户 我希望他只看到div2 I used ng if 因为它删除了div完全 并且不使用display none 安全吗 是否可以通过代理工具和
  • 在哪里可以找到 STS.ini 文件?

    我正在尝试增加 MAC OSX 中 STS 套件的堆堆栈 但无法找到 sts ini 文件来更改它 根据此链接 http blog yohanliyanage com 2012 11 sts in os x wheres the eclip
  • Visual Studio Code 未在 OS X 上加载符号

    我正在尝试在 OS X 上使用 ASP NET Core 设置 Web api 我已经正确设置了我的环境 我认为 并且我能够使用以下命令构建和运行我的应用程序dotnet build从终端 我可以从 Visual Studio Code 开
  • 收到“在您的钥匙串中找不到与此配置文件匹配的有效签名身份”警告

    我希望在 iPod Touch 上测试我的应用程序 我创建了开发配置文件 我将下载的 mobileprovision 文件拖到管理器中 有一个黄色三角形警告 在您的钥匙串中找不到与此配置文件匹配的有效签名身份 其他发行版配置文件没有任何问题
  • 使用jquery获取元素id

    代码应该打印所选 div 的 id 但它没有 我没有发现错误 感谢帮助 HTML div div div div
  • 绑定到正在运行的服务(在 finish() 之后)/回调处理程序

    又是一个关于 LocalServices 的问题 在 onDestroy 之后 如何 重新 绑定到现有服务 问题 我正在绑定到服务并从活动启动该服务 我将可运行对象发布到 Binder 以在 UI 上进行回调 更新进度条 当我关闭此 Act
  • 将“新”构造函数“绑定”到 Javascript 中的函数

    我正在创建一个库 其中的函数每秒可能被调用数千次 该功能需要new构造函数 以便将一组新数据绑定到固定原型 如下所示 var internalFunc function a this foo a internalFunc prototype
  • 在实体框架中创建递归实体的正确方法是什么?

    我目前正在使用 VS 2010 RC 并且正在尝试创建一个包含递归自引用实体的模型 目前 当我从模型导入实体时 我收到一条错误 指示父属性不能成为关联的一部分 因为它设置为 计算 或 身份 但我不确定为什么要这样做 我一直在手动编辑该文件来
  • MongoDB:无法从 BSON 类型 EOO 转换为 Date

    我尝试使用聚合框架 带有 ruby 并像这样投影日期 db requests aggregate project gt id 0 method method user user year year gt timestamp 该文件是这样的
  • AttributeError:“NoneType”对象没有属性“ravel”

    有人可以告诉我这段代码有什么问题吗 我继续得到NoneType错误 我正在尝试创建一个直方图 import cv2 import numpy as np from matplotlib import pyplot as plt img cv
  • 确定字符串是否以一组标记中的标记开头的更有效方法?

    我目前正在我正在处理的一些代码中做类似的事情 public CommandType GetCommandTypeFromCommandString String command if command StartsWith CommandCo
  • 在 powershell 脚本中传递 SqlCmd 的路径

    我正在尝试编写一个 powershell 脚本 它将执行 sqlcmd exe 来运行 sql 脚本 该脚本包含一个 SQLCMD 变量 我想通过 sqlcmd 的 v 开关在命令行中传递该变量 问题是 当我将路径作为变量之一的值传递时 p
  • 更改圆形 svg 内的描边宽度

    试图改变stroke width of paths里面一个svg 两条路径都应该是9代替3 and 5 结果我的路径变形了 不是圆形 请提供任何帮助和简短的解释 single width 120px height 120px div cla
  • 当选择区域时,PHP 从数据库填充数据

    请关注此帖子 请查看我的以下帖子链接多个选择 https stackoverflow com questions 11712199 chained multiple selects 我有这样的代码 用户选择特定的医生类别 然后选择他想要查看
  • 如何从项目中删除环境?

    是否可以从项目中删除移动环境 例如 Blackberry 和 Adob e Air 环境 例如 mobilefirst add environment 有助于添加环境 但是有没有删除环境的命令 CLI 没有 删除环境 的命令 您可以在此处提
  • SlideUp 只隐藏?无法使用slideUp显示

    bannerFijo是一个固定的横幅display none at bottom 0px 所以为了展示它我应该slideUp 但似乎这不起作用
  • VBA Excel QueryTables.add .刷新BackgroundQuery错误

    Sub Macro1 Dim URL As String Dim Path As String Dim i As Integer For i 2 To 50 If Range Prices E i Value lt gt 1 Then UR
  • 如何在 CKEditor 5 中禁用放置事件

    我们正在尝试将 CKEditor 5 实现到我们的应用程序中 但我们在文档方面遇到了一些困难 我们想要禁用将拖放事件放入编辑区域或以某种方式控制它 有这样的活动吗 我们正在努力editor model document on clipboa
  • 将base64编码的数据序列化为JSON

    我正在编写一个脚本来自动生成演示数据 并且需要在 JSON 中序列化一些数据 该数据的一部分是图像 因此我将其编码为 base64 但是当我尝试运行脚本时 我得到 Traceback most recent call last File l