擅长:python、mysql、java
<p>对您的方法进行修改,以检查子对象是否具有dicts,在这种情况下以及其他简单情况下都可以使用。例如:</p>
<pre class="lang-py prettyprint-override"><code>def to_dict(obj):
"""Convert objects with a '__dict__' method into nested dicts."""
return {
key: to_dict(value) if hasattr(value, '__dict__') else value
for key, value in obj.__dict__.items()
}
print(json.dumps(to_dict(car)))
</code></pre>
<p>但在许多情况下,这一点会下降:</p>
<ul>
<li>如果在对象中使用<code>__slots__</code></li>
<li>如果要支持属性或列表</li>
</ul>
<p>您可以扩展该方法来尝试并解释其中的每一个,但现在可能是时候咬紧牙关,要么使用序列化库(如其他地方所建议的),要么按照您的建议编写自己的特定于对象的<code>to_dict()</code>方法了</p>