我们有一个相当大而复杂的json架构,其中很多都包含$ ref引用。理想情况下使用Python和jsonschema我想采用这些模式并完全扩展引用(递归)以获得完整的模式。
以dict形式输出很好(jsonschema用来表示模式的标准数据结构)。
答案 0 :(得分:3)
如果您查看json documentation
您会发现不建议使用循环$ ref但不禁止。
因此,在这种情况下,无法完全展开所有$ref
但如果你确定$ref
中没有循环,我会建议你使用this repo它在这种情况下帮助了我。代码非常简单,因此您可以自行更改。
答案 1 :(得分:0)
我已经测试过,也可以推荐以下模块:
https://github.com/gazpachoking/jsonref
位于PyPI上。 documentation很好,最近才进行维护(2018年10月),其语法使得它可以代替标准json模块:
从主页上
:>>> from pprint import pprint
>>> import jsonref
>>> # An example json document
>>> json_str = """{"real": [1, 2, 3, 4], "ref": {"$ref": "#/real"}}"""
>>> data = jsonref.loads(json_str)
>>> pprint(data) # Reference is not evaluated until here
{'real': [1, 2, 3, 4], 'ref': [1, 2, 3, 4]}