繁体   English   中英

JSON序列化错误与simplejson

[英]JSON Serialization error with simplejson

我有以下代码:

data = {'services': [u'iTunes'], 
        'orders': [u'TestOrder', u'Test_April_Titles_iTunes'],
        'providers': ''}

return HttpResponse(simplejson.dumps(data))

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" in default
  178.         raise TypeError(repr(o) + " is not JSON serializable")

Exception Type: TypeError at /reports/change_dropdown/
Exception Value: [u'iTunes'] is not JSON serializable

我要怎么做才能序列化此字典并在其中包含一个列表?

问题在于itunes是非JSON兼容类型。

要解决提供默认类型以在序列化时转换非JSON兼容类型的问题:

simplejson.dumps(data, default=str))

甚至:

def handler(val):
    if isinstance(val, unicode)
        return str(val)
    else:
        return val

simplejson.dumps(data, default=handler))

第二个选项的优点是您可以处理集合(例如,转换为列表),日期(例如,转换为int时间戳)等。

unicode转换为str在这里工作:

data['services'] = [str(item) for item in data['services']]
data['orders'] = [str(item) for item in data['orders']]
data['providers'] = [str(item) for item in data['providers']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM