我的请求是QueryDict类型,我想将其转换为JSON对象或字符串,以便我可以针对JSON模式对其进行验证。其中一个JSON字段包含一个列表,如下所示:
{
"message": "Hello!",
"people": ["Aaron", "Randy", "Chris", "Andrew"]
}
当我使用json.dumps()将其转换为字符串时,请获取以下内容:
'{"message": "Hello!", "people": "Andrew"}'
处理这种情况的最佳方法是什么?
答案 0 :(得分:8)
将您的QueryDict
转换为标准Python dict
,并在生成的json.dumps()
上致电dict
:
import json
from django.http import QueryDict
qd = QueryDict('people=Aaron&people=Randy&people=Chris&people=Andrew&message=Hello!')
>>> qd
<QueryDict: {u'message': [u'Hello!'], u'people': [u'Aaron', u'Randy', u'Chris', u'Andrew']}>
>>> json.dumps(qd)
'{"message": "Hello!", "people": "Andrew"}'
>>> json.dumps(dict(qd))
'{"message": ["Hello!"], "people": ["Aaron", "Randy", "Chris", "Andrew"]}'
如果您不喜欢将单个值表示为列表的键,则可以执行以下操作:
>>> d = {k:v if len(v) > 1 else v[0] for k,v in qd.iterlists()}
>>> json.dumps(d)
'{"message": "Hello!", "people": ["Aaron", "Randy", "Chris", "Andrew"]}'