0

我有以下代码:

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

我需要做什么来序列化这个字典,里面有一个列表?

4

2 回答 2

1

问题是这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 时间戳)等。

于 2013-03-27T13:02:42.540 回答
0

从这里转换unicodestr工作:

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']]
于 2013-03-26T21:13:01.980 回答