【问题标题】:QueryDict to string loses list within JSONQueryDict 到 JSON 中的字符串丢失列表
【发布时间】:2015-04-21 16:54:21
【问题描述】:

我的请求是 QueryDict 类型的,我想将其转换为 JSON 对象或字符串,以便根据 JSON 模式对其进行验证。其中一个 JSON 字段包含一个列表,如下所示:

{
"message": "Hello!",
"people": ["Aaron", "Randy", "Chris", "Andrew"]
}

当我使用 json.dumps() 将其转换为字符串时,得到以下信息:

'{"message": "Hello!", "people": "Andrew"}'

处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: python json django


    【解决方案1】:

    将您的 QueryDict 转换为标准 Python dict 并在生成的 dict 上调用 json.dumps()

    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"]}'
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多