在此处的文档中 - https://docs.python.org/3/library/json.html
它说 object_pairs_hook
:
object_pairs_hook 是一个可选函数,它将使用任何对象文字的结果调用,并使用有序的对列表进行解码。将使用 object_pairs_hook 的返回值代替字典。此功能可用于实现自定义解码器。如果还定义了 object_hook,则 object_pairs_hook 优先。
在 这个答案 中有一个相当令人印象深刻的例子。
我不明白什么是“挂钩”或此功能的工作原理。文档并没有真正清楚地解释它。我现在想写一个(否则我正在解析的字符串上将是一堆字符串方法)
有没有人知道关于此功能的教程或足够了解它以详细解释它是如何工作的?他们似乎在文档中假设您知道 json.loads()
的黑匣子中发生了什么
原文由 cardamom 发布,翻译遵循 CC BY-SA 4.0 许可协议
它允许您自定义 JSON 将解析成的对象。对于这个特定的参数(
object_pairs_hook
)它是对(读取映射对象的键/值对)。例如,如果此字符串出现在您的 JSON 中:
它将使用以下参数调用指向的函数:
无论函数返回什么,都将在上面字符串所在的结果解析结构中使用。
一个简单的例子是
object_pairs_hook=collections.OrderedDict
它确保您的键的排序方式与它们在传入字符串中出现的方式相同。钩子的一般思想是允许您注册一个函数,该函数根据给定任务的需要被调用(返回)。在这种特定情况下,它允许您自定义对传入的 JSON 字符串(不同类型的对象)的解码。