把固定字符串转化为json,请问该如何封装呢

例如有post提交的字符串如下
a=test&b=test1&c=test2
想转化为json便于曲直

现用方法为

function post2json(option) {
    let str = ''
    option.split('&').map(function(e){
        str = str + "," + e.split('=')[0] + ":'" + e.split('=')[1] + "'" 
    })
    str = str.slice(1);
    return str;
}
module.export = post2json;

调用的时候要require后
let post2json = require('./post2json')
post2json.post2json('a=1&b=2&c=3')

感觉不是太方便
如果想让写法为 let json = 'a=1&b=2&c=3'.post2json
请问该如何封装呢,用prototype

阅读 3.7k
3 个回答

String.prototype.post2json = function(option){

.....

}

要使用的prototype链上加

Q

编写 queryParser 完成解析

function queryParser(query){
    return query.split('&').map(function(e){
        var keyVal = e.split('=');
        var o = {};
        o[keyVal[0]] = keyVal[1];
        return o;
    }).reduce(function(acc, curr){
        var keys = Object.keys(curr);
        keys.forEach(function(key){
            acc[key] = curr[key]; 
        }); 
        return acc; 
    }, {});
}

[[ HINT ]]

  1. split & 分隔开查询字符串 便于处理 key=value 这样的字符串

  2. split = 以区分 keyvalue

  3. reduce 将结果归约在一个对象上

S

clipboard.png

N

如果想要变成 json 简单的封装一下。

var query2json(query){
    var queryObj = queryParser(query);
    return JSON.stringify(queryObj); 
}

H

。。。。 其实如果是 node 可以用 querystring 库来处理查询字符串的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题