使用 python 将以下查询字符串解析为 json
Parse the following query string into json using python
我有一个格式如下的查询字符串:
cmd=get-records&limit=100&offset=0&search[0][field]=number&search[0][type]=text&search[0][operator]=contains&search[0][value]=Mike+Jones&search[1][field]=name&search[1][type]=text&search[1][operator]=contains&search[1][value]=Mike+Jones&search[2][field]=role&search[2][type]=text&search[6]&searchLogic=OR
如何将其转换为结构化 json,如下(或类似):
{
cmd: "...",
limit: "...",
offset: "...",
search: {
0: {
number: "..."
name: "...",
...
}
1: {
...
}
...
},
...
}
我曾尝试使用 urlparse.parse_qs
但它将查询字符串转换为以下内容:
{
"cmd": ["..."],
"limit": ["..."],
"offset": ["..."],
"search[0][number]": ["..."],
"search[0][name]": ["..."],
"search[1][number]": ["..."].
...
}
问题在于搜索字段。我希望它的结构正确。我使用的技术如下:
前端:
w2ui table 从后端请求数据。此外,如本例所示,在进行搜索时,它会向后端发送请求以进行搜索。
后端:
姜戈。来自 w2ui 的 post 请求由接受查询字符串并相应地执行操作的视图处理。
如果您使用的是 Django,则在视图内的 request.GET
上,您的信息结构如下。
也许看看这个图书馆:querystring-parser
它需要 section[1]['words'][2]=a§ion[0]['words'][2]=a§ion[0]['words'][2]=b
并将其转换为 {u'section': {0: {u'words': {2: [u'a', u'b']}}, 1: {u'words': {2: u'a'}}}}
,这看起来像您想要的。
他们在 Django 中使用它的文档:
from querystring_parser import parser
post_dict = parser.parse(request.GET.urlencode())
看看 querystring-parser 包,它可以满足您的需求:
import pprint
from querystring_parser import parser as qsparser
# I had to modify the query string you provided by adding a value
# search[6]; it didn't have one before, which caused an exception
query_string = (
'cmd=get-records&limit=100&offset=0&search[0][field]=number&'
'search[0][type]=text&search[0][operator]=contains&'
'search[0][value]=Mike+Jones&search[1][field]=name&search[1][type]=text&'
'search[1][operator]=contains&search[1][value]=Mike+Jones&'
'search[2][field]=role&search[2][type]=text&search[6]=SEARCH6&'
'searchLogic=OR'
) # NOTE: I had
query_string_as_dict = qsparser.parse(query_string)
pprint.pprint(query_string_as_dict)
结果是:
{u'cmd': u'get-records',
u'limit': 100,
u'offset': 0,
u'search': {0: {u'field': u'number',
u'operator': u'contains',
u'type': u'text',
u'value': u'Mike Jones'},
1: {u'field': u'name',
u'operator': u'contains',
u'type': u'text',
u'value': u'Mike Jones'},
2: {u'field': u'role', u'type': u'text'},
6: u'SEARCH6'},
u'searchLogic': u'OR'}
如果你想要它 JSON:
import json
json_string = json.dumps(query_string_as_dict)
我有一个格式如下的查询字符串:
cmd=get-records&limit=100&offset=0&search[0][field]=number&search[0][type]=text&search[0][operator]=contains&search[0][value]=Mike+Jones&search[1][field]=name&search[1][type]=text&search[1][operator]=contains&search[1][value]=Mike+Jones&search[2][field]=role&search[2][type]=text&search[6]&searchLogic=OR
如何将其转换为结构化 json,如下(或类似):
{
cmd: "...",
limit: "...",
offset: "...",
search: {
0: {
number: "..."
name: "...",
...
}
1: {
...
}
...
},
...
}
我曾尝试使用 urlparse.parse_qs
但它将查询字符串转换为以下内容:
{
"cmd": ["..."],
"limit": ["..."],
"offset": ["..."],
"search[0][number]": ["..."],
"search[0][name]": ["..."],
"search[1][number]": ["..."].
...
}
问题在于搜索字段。我希望它的结构正确。我使用的技术如下:
前端:
w2ui table 从后端请求数据。此外,如本例所示,在进行搜索时,它会向后端发送请求以进行搜索。
后端:
姜戈。来自 w2ui 的 post 请求由接受查询字符串并相应地执行操作的视图处理。
如果您使用的是 Django,则在视图内的 request.GET
上,您的信息结构如下。
也许看看这个图书馆:querystring-parser
它需要 section[1]['words'][2]=a§ion[0]['words'][2]=a§ion[0]['words'][2]=b
并将其转换为 {u'section': {0: {u'words': {2: [u'a', u'b']}}, 1: {u'words': {2: u'a'}}}}
,这看起来像您想要的。
他们在 Django 中使用它的文档:
from querystring_parser import parser
post_dict = parser.parse(request.GET.urlencode())
看看 querystring-parser 包,它可以满足您的需求:
import pprint
from querystring_parser import parser as qsparser
# I had to modify the query string you provided by adding a value
# search[6]; it didn't have one before, which caused an exception
query_string = (
'cmd=get-records&limit=100&offset=0&search[0][field]=number&'
'search[0][type]=text&search[0][operator]=contains&'
'search[0][value]=Mike+Jones&search[1][field]=name&search[1][type]=text&'
'search[1][operator]=contains&search[1][value]=Mike+Jones&'
'search[2][field]=role&search[2][type]=text&search[6]=SEARCH6&'
'searchLogic=OR'
) # NOTE: I had
query_string_as_dict = qsparser.parse(query_string)
pprint.pprint(query_string_as_dict)
结果是:
{u'cmd': u'get-records',
u'limit': 100,
u'offset': 0,
u'search': {0: {u'field': u'number',
u'operator': u'contains',
u'type': u'text',
u'value': u'Mike Jones'},
1: {u'field': u'name',
u'operator': u'contains',
u'type': u'text',
u'value': u'Mike Jones'},
2: {u'field': u'role', u'type': u'text'},
6: u'SEARCH6'},
u'searchLogic': u'OR'}
如果你想要它 JSON:
import json
json_string = json.dumps(query_string_as_dict)