python - 将 json 文件编码为字节
问题描述
我想将我的 json 文件编码为字节。
我正在使用提供大量数据的传感器。现在我正在做的是获取每个值,使用将其转换为字节struct.pack()
,堆叠数据并最终发送。
例如,如果我有:
{
'Temperature':9999,
'Ph': 8888,
'WindDir': 7777,
...
}
我在想,可能存在一些函数、算法、NN 等可以直接将此 dict 转换为二进制,并且显然是一个解码器。
这个想法是做类似的事情,struct.pack(myFile.json)
.
我认为这很有趣,因为如果可能的话,我不仅可以处理数字,也可以处理字符串,并将数据作为典型的 API 响应发送。
注意:它是以字节为单位的强制性工作。
解决方案
只要您的内容dict
仅限于内置 python 类型,您就可以毫不费力地使用pickle内置模块。
创建文件如下:
import pickle
d = {"a":1,"b":"two","c":3.5}
with open("data.p","wb") as f:
pickle.dump(d, f)
从该文件中读取如下:
import pickle
with open("data.p","rb") as f:
d = pickle.load(f)
print(d) # {'a': 1, 'b': 'two', 'c': 3.5}
创建bytes
如下:
import pickle
d = {"a":1,"b":"two","c":3.5}
databytes = pickle.dumps(d)
print(databytes) # b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02X\x03\x00\x00\x00twoq\x03X\x01\x00\x00\x00cq\x04G@\x0c\x00\x00\x00\x00\x00\x00u.'
读bytes
法如下:
import pickle
databytes = b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02X\x03\x00\x00\x00twoq\x03X\x01\x00\x00\x00cq\x04G@\x0c\x00\x00\x00\x00\x00\x00u.'
d = pickle.loads(databytes)
print(d) # {'a': 1, 'b': 'two', 'c': 3.5}
推荐阅读
- c++ - 桌面计算器的问题。C++ 编程语言
- javafx - 当 Jasper Report 在弹出窗口中可见时如何在 JavaFx 中锁定父窗口
- java - 给定方法名称和对象数组,如何使用 Java 反射找到最佳匹配重载
- java - Google App Engine 将传出请求重定向到 Compute Engine 代理
- python - 如何在 Python 中修复“无法分配给函数调用”
- javascript - 如何使用 twitter api 和 node.js 获取推文的转发者
- javascript - 普通 javascript 触发 css 淡出,ajax 加载内容,使用 CSS 淡入
- mysql - MySQL 8 选择语句以获取“Last_query_cost”
- javascript - angular 在重建之前找不到模块
- python - PyTorch 嵌入层引发“预期...cuda...但得到...cpu”错误