从 QueryString 到 JavaScript 中的 JSON
From QueryString to JSON in JavaScript
如何将像var1=5&var2=stackoverflow&var3=blah
这样的QueryString转换为像这样的JSON对象:
{
"var1": "5",
"var2": "stackoverflow",
"var3": "blah"
}
我正在关注这个,但看起来我错过了一些东西......如果需要,我也可以使用jQuery。
我通过手动解析对象本身来解决...
AjaxForm.prototype.getData = function() {
var data = this.$element.serializeArray();
var object = {};
for (var i = 0; i < data.length; i++) {
object[data[i].name] = data[i].value;
}
return JSON.stringify(object);
};
由于您没有提供代码片段,因此不确定您在上述教程中的哪一点上挣扎,但是查看该文章,我能够为您制作一个完全工作的示例(评论中有一些改进建议)。观察以下内容...
function QueryStringToJSON(str) {
var pairs = str.split('&');
var result = {};
pairs.forEach(function (pair) {
pair = pair.split('=');
var name = pair[0]
var value = pair[1]
if (name.length)
if (result[name] !== undefined) {
if (!result[name].push) {
result[name] = [result[name]];
}
result[name].push(value || '');
} else {
result[name] = value || '';
}
});
return (result);
}
var string = 'var1=5&var2=stackoverflow&var3=blah';
var obj = QueryStringToJSON(string);
console.log(obj) // {var1: "5", var2: "stackoverflow", var3: "blah"}
JSFiddle Link - 工作演示
在网上搜索会指向jQuery BBQ:$.deparam
在某些时候作为一种方法。这很棒,而且可能更健壮一些,但您应该能够首先摆脱上面的代码,特别是如果您想要一个普通的解决方案(您总是应该这样做!!
它可以用一行写。
Object.fromEntries(new URLSearchParams('var1=5&var2=stackoverflow&var3=blah'))
可运行代码段:
const paramsString = "var1=5&var2=stackoverflow&var3=blah";
const searchParams = new URLSearchParams(paramsString);
// Iterate the search parameters.
for (let p of searchParams) {
console.log(p);
}
console.log(Object.fromEntries(searchParams));
你可以按照这个操作:
$(function(){
// Values are not coerced.
var params = $.deparam.querystring();
debug.log( 'not coerced', params );
$('#deparam_string').text( JSON.stringify( params, null, 2 ) );
// Values are coerced.
params = $.deparam.querystring( true );
debug.log( 'coerced', params );
$('#deparam_coerced').text( JSON.stringify( params, null, 2 ) );
// Highlight the current sample query string link
var qs = $.param.querystring();
$('li a').each(function(){
if ( $(this).attr( 'href' ) === '?' + qs ) {
$(this).addClass( 'current' );
}
});
});
你可以
这样做。
var query="var1=5&var2=stackoverflow&var3=blah";
var arr=query.split("&");
result={};
for(i=0;i<arr.length;i++) {
k = arr[i].split('=');
result[k[0]] = (k[1] || '');
};
console.log(result);
所以我在这里做什么1)使用"&"拆分查询。你会得到数组为 ["var1=5",....];
2)再次将数组的每个元素拆分为"="。
3)将键作为arr[0],值作为arr[1],如果没有值,则为''。
注意:这适用于解码的 URI。如果首先对 URI 进行编码,则使用 decodeURIComponent() 函数对其进行解码。
相关文章:
- 单击按钮更改加载到表中的JSON文件
- 将字符串转换为GWT中的JSON对象(JSNI)
- 使用jquery解析phonegap中的json数据
- 将javascript中的JSON输出为不带jquery的列表
- 如何使用NodeJS修改文件中的JSON值
- 对数组中的json对象进行迭代
- 使用 js 删除本地存储中的 json 对象
- 如何用HTML中的JSON外部文件填充下拉按钮
- 使用$http的angular js中的JSON数据-data.push()
- AJAX请求中的JSON对象为Null或空
- 隐藏HTML元素中的JSON编码和解码
- 分析sharepoint 2010 Web部件中的json
- 将MySQL中的JSON导入Google图表
- 从表中的 JSON 数组获取数据
- 如何更新文件中的 JSON 数据
- 使用 Bean 对象中的 JSON 构造数组
- JavaScript 中的 JSON 解析
- 节点.js中的 JSON 数组
- JavaScript 中的 JSON.stringify () 错误
- 使用 PHP 中的 JSON 进行 JSON 解析