序列化

将对象格式转换为URL参数格式

方式一

  1. /*
  2. * 将对象转换成 URL 参数
  3. *
  4. * 空格 --> %20
  5. * + --> %2B
  6. * Content-Type: application/x-www-form-urlencoded
  7. * */
  8. const encodedUrlParams = obj => {
  9. let arr = [];
  10. for(let i in obj){
  11. if (obj.hasOwnProperty(i)) {
  12. arr.push(encodeURIComponent(i) + "=" + encodeURIComponent(obj[i]));
  13. }
  14. }
  15. return arr.join("&");
  16. };

方式二

  1. /*
  2. * 空格 --> ++
  3. * + --> %2B
  4. * Content-Type: application/x-www-form-urlencoded;charset=UTF-8
  5. * */
  6. const encodedUrlParams2 = obj => { // 方式二
  7. let data = new URLSearchParams();
  8. for(let i in obj) {
  9. if(obj.hasOwnProperty(i)) {
  10. data.append(i, obj[i]);
  11. }
  12. }
  13. return data;
  14. };

反序列化

将 URL 参数转换为对象

  1. const urlToObj = url => {
  2. let string = url.split('&');
  3. let res = {};
  4. for(let i = 0;i<string.length;i++){
  5. let str = string[i].split('=');
  6. if(str[0]!=''){
  7. res[str[0]]=str[1];
  8. }
  9. }
  10. return res;
  11. }
  12. //调用
  13. urlToObj("a=1&b=2")