擅长:python、mysql、java
<p>在其他答案的基础上,一个基于特定序列化程序的简单解决方案,该序列化程序只将<code>datetime.datetime</code>和<code>datetime.date</code>对象转换为字符串。</p>
<pre><code>from datetime import date, datetime
def json_serial(obj):
"""JSON serializer for objects not serializable by default json code"""
if isinstance(obj, (datetime, date)):
return obj.isoformat()
raise TypeError ("Type %s not serializable" % type(obj))
</code></pre>
<p>如图所示,代码只是检查对象是否属于类<code>datetime.datetime</code>或<code>datetime.date</code>,然后使用<code>.isoformat()</code>根据ISO 8601格式yyy-MM-DDTHH:MM:SS(很容易被JavaScript解码)生成其序列化版本。如果寻求更复杂的序列化表示,则可以使用其他代码代替str()(有关示例,请参阅此问题的其他答案)。代码结束时引发异常,以处理使用非序列化类型调用它的情况。</p>
<p>这个json_串行函数可以使用如下:</p>
<pre><code>from datetime import datetime
from json import dumps
print dumps(datetime.now(), default=json_serial)
</code></pre>
<p>json.dumps的默认参数如何工作的详细信息可以在<a href="http://docs.python.org/2/library/json.html#basic-usage" rel="noreferrer">Section Basic Usage of the json module documentation</a>中找到。</p>