我正在尝试使用编码包含字节字符串的字典json
,并得到一个is not JSON serializable error
:
import base64
import json
data = {}
encoded = base64.b64encode(b'data to be encoded')
data['bytes'] = encoded
print(json.dumps(data))
我得到的错误:
TypeError: b'ZGF0YSB0byBiZSBlbmNvZGVk\n' is not JSON serializable
如何使用JSON正确编码包含字节的字典?
该JSON格式只支持 Unicode的
字符串
。由于base64.b64encode
将字节编码为仅ASCII字节,因此您可以使用该编解码器解码数据:
import base64
encoded = base64.b64encode(b'data to be encoded') # b'ZGF0YSB0byBiZSBlbmNvZGVk' (notice the "b")
data['bytes'] = encoded.decode('ascii') # 'ZGF0YSB0byBiZSBlbmNvZGVk'
请注意,要获取原始数据,您无需将其重新编码为字节,因为它可以b64decode
处理仅ASCII字符串和字节:
decoded = base64.b64decode(data['bytes']) # b'data to be encoded'
问题内容: 我读取了大约1000个文件名,其中一些文件以UTF8编码,而某些文件为CP1252。 我想将它们全部解码为Unicode,以便在脚本中进行进一步处理。有没有一种方法可以使源编码正确解码为Unicode? 例: 问题答案: 如果您的文件位于和中,则有一种简单的方法。 否则,有一个字符集检测库。 Python-检测字符集并转换为utf-8 https://pypi.python.org/p
问题内容: 我需要为正在使用的例程传回JSON结果。在中,如何对数组进行JSON编码? 问题答案:
我正在使用python3,我在对象的表示方面遇到了问题。 它是,这是一个字节数组,但是当我把它传递给另一个函数时,python把它解释为一个字符串,这不是 。 b'N\x00e\x00l\x00\x00s\x00o\x00t\x00t\x00o\x00s\x000i\x00d\x00e_x00e\\x00m\x00a\x00\\x00W\x00i\x000n\x00d_x00W\x000s\x00
问题内容: 我遇到了一些有关JVM / JIT活动的参考,其中似乎在编译字节码和解释字节码之间有区别。该特定注释声明的字节码在前10000次运行时进行解释,然后进行编译。 “编译”和“解释”字节码之间有什么区别? 问题答案: 解释字节码基本上是逐行读取字节码,不进行任何优化或任何操作,然后对其进行解析并实时执行。由于许多原因,这种方法效率低下,其中包括Java字节码设计得不能快速解释的问题。 编译
问题内容: 我试图了解Python的工作原理(因为我一直都在使用它!)。据我了解,当您运行python script.py之类的脚本时,该脚本将转换为字节码,然后解释器/ VM / CPython(实际上只是一个C程序)读取python字节码并相应地执行该程序。 该字节码如何读入?它类似于在C语言中读取文本文件的方式吗?我不确定Python代码如何转换为机器代码。是否确实是Python解释器(CL
问题内容: 我正在使用教义2和zend框架1.11。在《准则2》中不鼓励使用公共属性,因此我将实体属性设为私有。但是,我刚刚了解到Zend_Json :: encode()和json_encode()不会看到私有/受保护的属性,因此不会在其输出中添加它们。 因此,当我同时使用var_dump和var_dump时,会得到一个空集,例如string(4)“ [{}]”。 事实证明,我必须编写自己的函数