在此处的文档中 - 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/