我的服务器将通过套接字将序列化为字符串的 JSON 发送到另一台客户端计算机。我将获取最终的 json 并执行以下操作:
import json
python_dict_obj = { "id" : 1001, "name" : "something", "file" : <???> }
serialized_json_str = json.dumps(python_dict_obj)
我希望 JSON 中的某个字段的值是一个文件,编码为字符串。
从性能角度(也是从互操作性角度)来说,使用 python 编码文件的最佳方法是什么? Base64?二进制?只是原始字符串文本?
编辑 - 对于那些建议 base64,类似这样的东西?
# get file
import base64
import json
with open(filename, 'r') as f:
filecontents = f.read()
encoded = base64.b64encode(filecontents)
python_dict_obj['file'] = encoded
serialized_json_str = json.dumps(python_dict_obj)
# ... sent to client via socket
# decrpyting
json_again = json.loads(serialized)
filecontents_again = base64.b64decode(json_again['file'])
I'd use base64
。 JSON 并非设计用于通信二进制数据。因此,除非您的文件内容是普通文本,否则“应该”对其进行编码以使用普通文本。几乎所有东西都可以编码和解码base64
。如果您改为使用(例如)Pythonrepr(file_content)
,这也会产生“纯文本”,但接收端需要知道如何解码Python转义的字符串repr()
uses.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)