方法一:
在 JavaScript 中,可以使用 URLSearchParams 对象来处理 URL 中的查询字符串。
序列化(将 JavaScript 对象转换为查询字符串)可以使用 URLSearchParams 对象的 append() 方法,如下所示:
let params = new URLSearchParams();
params.append('name', 'John');
params.append('age', '30');
let queryString = params.toString();
console.log(queryString);
反序列化(将查询字符串转换为 JavaScript 对象)可以使用 URLSearchParams 的构造函数,如下所示:
let queryString = "name=John&age=30";
let params = new URLSearchParams(queryString);
console.log(params.get('name')); // "John"
console.log(params.get('age')); // "30"
对于反序列化的操作可以使用URL的search属性,来解析query string
let url = new URL('https://example.com?name=John&age=30');
let params = new URLSearchParams(url.search);
console.log(params.get('name')); // "John"
console.log(params.get('age')); // "30"
需要注意的是,URLSearchParams 对象只能用于处理查询字符串,而不能用于创建或解析整个 URL。
如果需要更高级的处理方式,可以使用其它库或第三方函数库,比如 qs, querystring 等库来处理。
对于反序列化的操作中的URLSearchParams的使用还有一些方法,比如:
这些方法都能给出更灵活的操作,请根据具体需求来选择使用
方法二:
当然,如果需要手动处理查询字符串,也可以使用 JavaScript 的标准字符串处理函数来实现。
序列化,可以使用下面的代码把一个对象转换为查询字符串:
function objectToQueryString(obj) {
return Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&');
}
console.log(objectToQueryString({name: 'John', age: '30'}))
反序列化,可以使用下面的代码把查询字符串转换为一个对象:
function queryStringToObject(queryString) {
let obj = {};
let arr = queryString.split("&");
for(let i = 0; i < arr.length; i++){
let temp = arr[i].split("=");
obj[temp[0]] = temp[1];
}
return obj;
}
console.log(queryStringToObject('name=John&age=30'))
需要注意的是,上述代码使用了 encodeURIComponent 和 decodeURIComponent 来编码和解码查询字符串中的字符,以防止出现无效或不安全的字符。
这些方法都能达到相同的目的,你可以根据项目中使用的JavaScript环境和需要的复杂度来进行选择
作者:yuzhihui
出处:http://www.cnblogs.com/yuzhihui/
jquery中serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串。serialize确实是能够解决一般的提交数据,但是有时我们需要的是一个object对象,而不是字符串(比如jqgrid reload时设置查询条件参数,就需要object对象)。
当对象的value为undefined和Object时会被忽略,当toString和valueOf都存在时,在进行操作时,都会尝试转换成基本类型,先找valueOf,如果返回基本类型,这只调用valueOf,如果不是,比如是对象的话,就去找toString,如果也返回Object,就会报错
最近在做 Node 服务端需求的时候,遇到了几次服务端报错的问题。打 log 发现均是一些 Error,但是它们都没法很好地透传给前端浏览器,出现问题只能查看服务端机器的日志,调试起来非常不方便。思考了一下
JSON(JavaScript Object Notation)用于与Web服务器或RESTFull API交换数据,从Web服务器接收的数据始终是字符串。为了使用这些数据,您需要使用JSON.parse()解析数据,它将返回一个JavaScript对象或对象数组。
其实看看上面的代码,不难发现,if…else这种格式,其实就是数据结构中的单链表,那么,初步利用JavaScript实现单链表,如下:
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!