使用 python 3 专门化 JSON 对象编码

2023-12-02

由于Python3中dict.values()和keys()的更改,我遇到了一些麻烦。

我的旧代码是这样的:

import json
class ComplexEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, complex):
            return [obj.real, obj.imag]
        return json.JSONEncoder.default(self, obj)

a = { '1' : 2 + 1j, '2' : 4 + 2j }

print(json.dumps(a.values(), cls=ComplexEncoder))

这在 Python 3.3+ 上引发异常:

TypeError: dict_values([(2+1j), (4+2j)]) is not JSON serializable

简单的解决方法是list(a.values()),对我来说问题是我在代码中有很多类似的实例。有没有办法扩展 ComplexEncoder 以便迭代 看法?


您可以将可迭代编码为列表:

class IterEncoder(json.JSONEncoder):
    def default(self, obj):
        try:
            return list(obj)
        except TypeError:
            return super().default(obj)

class ComplexEncoder(IterEncoder):
    def default(self, obj):
        if isinstance(obj, complex):
            return [obj.real, obj.imag]

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

使用 python 3 专门化 JSON 对象编码 的相关文章

  • 使用 ruamel.yaml,如何使带有 NEWLINE 的变量成为不带引号的多行

    我正在生成用作协议的 YAML 其中包含一些生成的 JSON import json from ruamel import yaml jsonsample id 123 type customer account other myyamel
  • 使用 Apache Spark 读取 JSON - `corrupt_record`

    我有一个json file nodes看起来像这样 toid osgb4000000031043205 point 508180 748 195333 973 index 1 toid osgb4000000031043206 point
  • 如何阅读网站内容?

    我是使用 python 2 7 的网络爬虫的新手 一 背景 现在 我想收集有用的数据AQICN org http aqicn org city shenyang usconsulate 这是一个很棒的网站 提供世界各地的空气质量数据 我想用
  • Emoji 字符无法编码为 JSON

    我有一个UITextView我称之为messageField 其中的数据messageField is POST ed 以 JSON 格式发送到服务器 当用户输入表情符号字符时 我无法将数据编码为JSON 我认为 Emoji 使用 Unic
  • tkinter - 使用按钮在帧之间来回切换

    我需要功能 最好是一个功能 当按下下一页和后退按钮时可以在页面之间来回切换 我想这可以通过将布尔变量分配给后退和下一页按钮来完成 不确定是否可以这样做 来确定您是否要前进或后退所有页面的有序列表 需要知道当前升高的框架的索引 索引可用于找出
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 使用 JSON 文件动态更新 HTML 内容?

    我想创建一个 JS 循环 使用 jQuery 来查看 JSON 文件 并根据是否 div ids 与 JSON id 值匹配 这需要易于扩展并且无论有多少人都可以工作 div 添加了盒子 我有一个 HTML 文件 设置如下 div clas
  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • BigQuery 如何获取 JSON 结构中的值的总和?

    我有以下查询 SELECT JSON EXTRACT json Weights as weight from select Weights blue 1 0 purple 0 0 yellow 1 0 green 1 0 as json 返
  • 将 JSON 数据导入 Google 表格

    我从 Web 服务中提取数据 其格式为 JSON 我正在为 Google Sheets 编写一个 Google Apps 脚本 它将为我填充数据 我的问题是 我似乎无法解析它 Doing var dataset myJSONtext Bro
  • python 中带有 lambda 函数字典的奇怪行为

    我编写了一个用于生成 lambda 常量函数字典的函数 它是一个更复杂函数的一部分 但我已将其简化为下面的代码 def function a interpolators for key in a keys interpolators key
  • Python 类型提示 Dict 语法错误 可变默认值是不允许的。使用“默认工厂”

    我不知道为什么解释器会抱怨这个类型的字典 对于这两个实例 我得到一个 不允许可变默认值 使用默认工厂 语法错误 我使用的是 python 3 7 3 from dataclasses import dataclass from typing
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 如何通过SQL查询检查是否有JSON函数?

    有SQL 2016 中的 JSON 函数 https learn microsoft com en us sql t sql functions json functions transact sql例如 JSON VALUE JSON Q
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • Perl 5.8.8 不支持 XML::LibXML 吗?

    我回答了一个question不久前我最初建议使用 XML DOM 后mirod建议我使用 XML LibXML 代替 我实现了它 说实话 它在我的系统上运行得很好 我发现新模块的运行时间大幅下降 而无需进行任何额外的优化 现在棘手的部分是
  • 在 Coq 中实现向量加法

    在某些依赖类型语言 例如 Idris 中实现向量加法相当简单 根据维基百科上的例子 import Data Vect default total pairAdd Num a gt Vect n a gt Vect n a gt Vect n
  • IE 必须关闭才能使事件与 jQuery 一起工作

    快速概述 函数 getbillno tbl 默认返回显示 1 ELSE echo 1 问题 在 IE 中 无论我显示什么 即使页面是空白 它也总是显示 1 我没有点击刷新 而是尝试关闭 IE 9 它确实显示了正确的值 我再次更改了代码中的值
  • 开源报告服务? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有没有免费的开源的报告服务我们可以将其部署在网络服务器中 并且不需要任何许可 实际上 我对整个框架 工具包 报告设计 查看和托管感兴趣 它应该能够从
  • 构建 OSX 应用程序包

    假设我在没有使用 Xcode 的情况下制作了一个 osX 应用程序 使用 GCC 编译后 我得到一个链接到其他几个库的可执行文件 其中一些库可能会再次动态链接到其他非标准系统库 是否有任何工具可以通过首先创建所需的目录结构 然后递归地复制
  • java ThreadPoolExecutor 中的workerCountOf()方法

    我试图理解 ThreadPoolExecutor 类 我发现该类中声明了一些最终变量 但无法理解它们的用途 private final AtomicInteger ctl new AtomicInteger ctlOf RUNNING 0
  • 如何在java中添加图像到表单

    我正在使用 JDeveloper 在 java 中设计一个表单 我是 JDeveloper 的新手 在 JDeveloper 工具中 我没有找到任何像 Net 那样直接将图像添加到表单的选项 而且我不知道如何手动添加图像到表单 有没有其他方
  • 无法连接到面向互联网的 NLB 将流量转发到私有实例

    我已经使用以下配置配置了云 VPC 在两个可用区中具有公有子网和私有子网 公有子网配置了 Internet 网关 私有子网配置了 NAT 网关 面向互联网的网络负载均衡器 允许在两个可用区域中配置 TCP 流量 用于转发来自负载均衡器的流量
  • 为什么我的 t-sql 左连接不起作用?

    你能运行这个并告诉我为什么结果集只有两行吗 它应该有三个 看起来像这样 appId stepId section start 101 1 Section 1 2016 01 03 00 00 00 000 101 2 Section 2 2
  • X-可编辑和 Bootstrap 数据表

    我尝试在引导数据表中实现 x editable 没有成功 原因是当我从 x editable 更新元素时 数据表无法识别这些更改 我尝试更新表 销毁它 隐藏标签 但主要问题似乎是数据表在初始化后无法识别任何更改 我通过单击按钮添加行 当它们
  • MEF2 中的强类型元数据 (System.Composition)

    我正在使用 System Composition 命名空间适用于 Web 和 Windows 应用商店应用 NuGet 包的 MEF在新的 ASP NET MVC4 项目中 I ve read在 MEF2 中您不再使用Lazy
  • CSS 背景过滤器在其后面的内容移动时不会更新

    我应该认为作为背后的内容backdropped元素移动时 元素的背景颜色会适应 看起来就像内容透过它发光一样 在这个例子中 情况并非如此 怎么了 在 Safari 12 0 3 macOS Mojave 10 14 3 上进行了测试 con
  • int num = new int();当这一行执行时会发生什么?

    今天了解了一个新事物 我们可以使用以下方法创建整数new运算符如下 int num new int 现在我想知道如果我以这种方式创建一个整数 那么生成的整数将是值类型还是引用类型 我想这将是一个值类型 我尝试了下面的代码 int num1
  • 生成的 Swagger REST 客户端无法正确处理查询参数的 + 字符

    我有这个 Spring REST 控制器方法 ApiOperation My method RequestMapping method RequestMethod POST value myMethod public void myMeth
  • 如何生成向量的所有可能组合

    我有一个向量 比如说A B C D E我有兴趣生成向量元素的所有可能的组合 下面给出了所需的输出 B A C A D A E A C B D B E B D C E C E D Try combn v1 2 FUN function x p
  • 如何在 JPA 中表达多态关联?

    A 多态关联类似于外键或多对一关系 不同之处在于目标可能是多种类型之一 语言中的类 数据库中的表 我正在将我使用多年的数据库设计从 PHP 移植到 Java 在旧代码中 我推出了自己的 ORM 但由于多种原因 它并不是最佳的 尽管我可能稍后
  • Google 地图容器显示没有地图

    我知道这个问题之前已经被问过很多次了 但是我见过的其他答案似乎都没有帮助我 基本上 地图的容器显示 作为页面上 500x300px 的空白 但没有地图 无论我做什么 我都无法显示地图 正如您可能猜到的那样 我不熟悉 Google 地图 因此
  • 将自动完成列表中的国家/地区的 Google 地图限制为“印度、美国和英国”

    该代码不起作用 请告诉我具体的解决方案 javascript gt
  • 为什么 readfile() 在读取 php 文件时表现得很奇怪,但在文本文件上却工作得很好

    代码在index php hello php 中的代码 我得到的输出是47但是当我在 hello php 中的字符串之前添加一行时 即echo br hello this is a php file 我得到输出hello this is a
  • 使用 python 3 专门化 JSON 对象编码

    由于Python3中dict values 和keys 的更改 我遇到了一些麻烦 我的旧代码是这样的 import json class ComplexEncoder json JSONEncoder def default self ob