【问题标题】:python: how to convert a query string to json string?python:如何将查询字符串转换为 json 字符串?
【发布时间】:2012-08-11 07:21:06
【问题描述】:

我想转换这样的查询字符串:

a=1&b=2

转json字符串

{"a":1, "b":2}

任何现有的解决方案?

【问题讨论】:

标签: python json


【解决方案1】:
import json
import urlparse

json.dumps(urlparse.parse_qs("a=1&b=2"))

产量

'{"a": ["1"], "b": ["2"]}'

这实际上比您的{"a":1, "b":2} 更好,因为 URL 查询字符串可以合法地多次包含相同的键,即每个键有多个值。

【讨论】:

  • 换句话说,将 qs 转换为 dict,然后将该 dict 转换为 json
  • 对于 Python 3 用户:urlparse 现在称为 urllib.parse
  • 可以导入为from urllib import parse as urlparse,而无需更改其余代码。
  • 如果您需要解析为单个值,则可以使用 parse_qsl - dict(urlparse.parse_qsl('a=1&b=2')) 产生 '{"a": ["1"], "b": ["2"]}'
【解决方案2】:

Python 3.x

from json import dumps
from urllib.parse import parse_qs

dumps(parse_qs("a=1&b=2"))

产量

{"b": ["2"], "a": ["1"]}

【讨论】:

    【解决方案3】:
    >>> strs="a=1&b=2"
    
    >>> {x.split('=')[0]:int(x.split('=')[1]) for x in strs.split("&")}
    {'a': 1, 'b': 2}
    

    【讨论】:

    • @BinChen 没有语法错误。你用的是哪个python版本?
    • 此语法在 Python 2.7+ 和 3+ 中可用。在 2.6 及更早版本中使用 d = dict((key, value) for (key, value) in iterable)
    【解决方案4】:
    dict((itm.split('=')[0],itm.split('=')[1]) for itm in qstring.split('&'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2023-01-04
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2017-06-05
      相关资源
      最近更新 更多