python - 了解 json.loads() 中的 object_pairs_hook

标签 python json python-3.x parsing

在此处的文档中 - https://docs.python.org/3/library/json.html

它说 object_pairs_hook :

object_pairs_hook is an optional function that will be called with the result of any object literal decoded with an ordered list of pairs. The return value of object_pairs_hook will be used instead of the dict. This feature can be used to implement custom decoders. If object_hook is also defined, the object_pairs_hook takes priority.



this answer 中有一个相当令人印象深刻的例子。 .

我不明白什么是“钩子(Hook)”或这个功能是如何工作的。文档并没有真正清楚地解释它。我现在想写一个(否则我正在解析的字符串上会出现一堆字符串方法)

有谁知道有关此功能的教程或对其足够了解以详细解释其工作原理?他们似乎在文档中假设您知道 json.loads() 的黑匣子中发生了什么。

最佳答案

它允许您自定义 JSON 将解析成的对象。对于这个特定的参数(object_pairs_hook),它是用于对(读取映射对象的键/值对)。
例如,如果此字符串出现在您的 JSON 中:

{"var1": "val1", "var2": "val2"}
它将调用使用以下参数指向的函数:
[('var1', 'val1'), ('var2', 'val2')]
无论函数返回什么,都将在上述字符串所在的结果解析结构中使用。
一个简单的例子是object_pairs_hook=collections.OrderedDict这可确保您的键的排序方式与它们在传入字符串中出现的方式相同。
钩子(Hook)的一般思想是允许您注册一个根据给定任务的需要调用(返回)的函数。在这种特定情况下,它允许您自定义对传入 JSON 字符串(不同类型的对象)的解码。

关于python - 了解 json.loads() 中的 object_pairs_hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519626/

相关文章:

Python - 使用分隔符从文本文件中分割数据

根据两组有效条目检查列表端点的pythonic方法

python - 如何在django中使用html从context_data解析json文件

Python:list() 函数搞乱了 map()

python - 使python变量三引号样式

android - 无法从 python 中调用 bash

java - Servlet 返回 "到 AngularJS2 调用

java - 使用 gson 从 json 中删除 null 属性

python - 从 URL 获取音频并播放

python-3.x - 如何在 Ubuntu 18.04 上将 python 版本从 3.6.0 切换到 3.6.7?