gpt4 book ai didi

python - python dict 到 json 二进制字符串的最快方法

转载 作者:行者123 更新时间:2023-12-04 14:00:11 26 4
gpt4 key购买 nike

我需要将此python dict转换为二进制json

   d = {'1': 'myval', '2': 'myval2'}

json_binary_str = b'{"1": "myval", "2": "myval2"}'

在python 3中,我有这个:
   import ujson
ujson.dumps(d)

但是,这不会创建二进制字符串。
我怎样才能做到这一点 ?

最佳答案

在 RFC https://www.rfc-editor.org/rfc/rfc7159 中, 它说:

JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32
乍一看,当你第一次看到这个时,Python 似乎并没有真正遵循规范,毕竟当它仍然是 Python3 'str' 字符串时编码意味着什么,但是 Python 正在为你做一些编码。尝试这个:
>>> json.dumps({"Japan":"日本"})
'{"Japan": "\\u65e5\\u672c"}'
您可以看到日语已转换为 unicode 转义符,结果字符串实际上是 ASCII,即使它仍然是 Python str。我不确定如何让 json.dumps() 真正为您提供 utf-8 序列 - 用于互操作性目的 - 如果您需要它们,但是对于所有实际目的来说,这对大多数人来说已经足够了。字符在那里,将被正确解释。很容易获得二进制文件:
>>> json.dumps({"Japan":"日本"}).encode("ascii")
b'{"Japan": "\\u65e5\\u672c"}'
当重新加载时,python 做了正确的事情:
>>> json.loads(json.dumps({"Japan":"日本"}).encode("ascii"))
{'Japan': '日本'}
但是如果你根本不关心编码,当给定一个 str 时,loads() 仍然会计算出要做什么:
>>> json.loads(json.dumps({"Japan":"日本"}))
{'Japan': '日本'}
Python - 一如既往 - 试图在弄清楚你想要什么并做它时尽可能地提供帮助,但这对于深入挖掘的人来说是令人困惑的,尽管我很喜欢 Python,但我对 OP 表示同情。这种“有帮助”的行为是否值得混淆是一场激烈的辩论。
值得注意的是,如果接下来要做的输出是写入文件,那么您可以这样做:
pathlib.Path("myfile.json").open("w").write(json_data)
然后你不需要它二进制,因为文件是以文本模式打开的,并且编码已经为你完成了。

关于python - python dict 到 json 二进制字符串的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com