![](/img/trans.png)
[英]How to encode bytes in JSON? json.dumps() throwing a TypeError
[英]Encode json files into bytes
我想將我的 json 文件編碼為字節。
我正在使用提供大量數據的傳感器。 現在我正在做的是獲取每個值,使用struct.pack()
將其轉換為字節,堆疊數據並最終發送。
例如,如果我有:
{
'Temperature':9999,
'Ph': 8888,
'WindDir': 7777,
...
}
我在想,可能存在一些 function、算法、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}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.