在.NET Core中如何将querystring转换为JSON字符串?
查询字符串(Query String)转JSON键值对实现方案
通用处理逻辑:
- 先清洗输入,去掉可能开头带的
?前缀(比如直接从浏览器地址栏获取的location.search默认带?) - 用
&作为分隔符拆分原始字符串,得到每个独立的键值对单元 - 对每个键值对用
=拆分出键和值,同时做URL解码,处理特殊字符转义的情况 - 把所有键值对存入对象/字典,最后序列化为JSON格式字符串
JavaScript 示例代码
function queryStringToJson(queryStr) { // 去除开头的?(如果存在) const cleanedStr = queryStr.startsWith('?') ? queryStr.slice(1) : queryStr; const keyValuePairs = cleanedStr.split('&'); const resultObj = {}; keyValuePairs.forEach(pair => { const [key, value] = pair.split('='); // 解码URL编码字符,空值兜底 resultObj[decodeURIComponent(key)] = decodeURIComponent(value || ''); }); return JSON.stringify(resultObj); } // 测试用例 const inputQuery = "ID=123&FNAME=test&LNAME=xyz"; console.log(queryStringToJson(inputQuery)); // 输出结果:{"ID":"123","FNAME":"test","LNAME":"xyz"}
Python 示例代码
from urllib.parse import parse_qs import json def query_string_to_json(query_str: str) -> str: # 解析查询字符串,保留空值 parsed_data = parse_qs(query_str, keep_blank_values=True) # parse_qs默认返回列表,单值场景直接取第一个元素 result_dict = {key: val[0] for key, val in parsed_data.items()} return json.dumps(result_dict) # 测试用例 input_query = "ID=123&FNAME=test&LNAME=xyz" print(query_string_to_json(input_query)) # 输出结果:{"ID": "123", "FNAME": "test", "LNAME": "xyz"}
补充说明:如果你的场景里存在同一个键多次出现的情况,比如
key1=val1&key1=val2,可以调整代码把对应的值存储为数组,避免丢失数据。
内容的提问来源于stack exchange,提问作者Jaya rama vardhan reddy guvval
相关产品推荐
相关产品推荐

