擅长:python、mysql、java
<p>@bruno的回答是有效的。但要回答“为什么”</p>
<p>比方说</p>
<pre><code>a=jsonref.JsonRef.replace_refs(jsonref.loads('''
{
"foo": {
"$ref": "#/def/obj"
},
"def": {
"obj": {
"bar": "baz"
}
}
}
'''))
</code></pre>
<p>这是因为对象还不是一个dict</p>
<pre><code>type(a['foo'])# returns JsonRef
</code></pre>
<p>这也将打破</p>
<pre><code>import json
json.dumps(a) # Gives error
</code></pre>
<p>所以一个解决办法可能是</p>
<pre><code>jsonref.JsonRef.replace_refs(json.loads(json.dumps(jsonref.loads('''
{
"foo": {
"$ref": "#/def/obj"
},
"def": {
"obj": {
"bar": "baz"
}
}
}
'''), default=dict)))
</code></pre>
<p>这会将任何<code>JsonRef</code>对象转换为<code>dict</code>。当然,任何其他对象也将被Json序列化。所以必须小心</p>