在不反序列化的情况下操作 JSON
Manipulate JSON without deserializing it
aiohttp 应用程序从外部资源获取 JSON 并需要使用它来执行另一个将 JSON 作为请求主体传递的请求。
为了避免serialization/deserialization开销,使用了ujson
,然后只传递JSON对象以用于后续请求,而无需加载或转储。这行得通,但是 JSON 不能这样操作,只能转发。
可能没有办法在不反序列化的情况下操作它,但是由于使用了 ujson
,该对象首先被反序列化为 C 对象。考虑到这一点,有没有办法在 C 级别继续操作这个对象,而无需将它作为 Python dict。一个示例操作是从 JSON 删除键或创建一个新的 JSON,其中只有原始 JSON 的一个子集。或者检查此 JSON.
中是否存在给定键
这可能对您有所帮助:https://github.com/lemire/simdjson
我不完全理解用例,但它是一个旨在
的库
We provide a fast parser, that fully validates an input according to various specifications. The parser builds a useful immutable (read-only) DOM (document-object model) which can be later accessed.
它有点具体,它需要具有特定技术和特定编译器的 CPU,但在我看来它可能适合您的用例。
它还有其他语言的包装器,包括 python。
aiohttp 应用程序从外部资源获取 JSON 并需要使用它来执行另一个将 JSON 作为请求主体传递的请求。
为了避免serialization/deserialization开销,使用了ujson
,然后只传递JSON对象以用于后续请求,而无需加载或转储。这行得通,但是 JSON 不能这样操作,只能转发。
可能没有办法在不反序列化的情况下操作它,但是由于使用了 ujson
,该对象首先被反序列化为 C 对象。考虑到这一点,有没有办法在 C 级别继续操作这个对象,而无需将它作为 Python dict。一个示例操作是从 JSON 删除键或创建一个新的 JSON,其中只有原始 JSON 的一个子集。或者检查此 JSON.
这可能对您有所帮助:https://github.com/lemire/simdjson
我不完全理解用例,但它是一个旨在
的库We provide a fast parser, that fully validates an input according to various specifications. The parser builds a useful immutable (read-only) DOM (document-object model) which can be later accessed.
它有点具体,它需要具有特定技术和特定编译器的 CPU,但在我看来它可能适合您的用例。
它还有其他语言的包装器,包括 python。