如果把这种字符串,转化为键值对?

新手上路,请多包涵
"{ppmCode=19359, ocsKey=4e2eae551b9042c8a50848b729625dd5, projectConfID=9010089422750064157, version=2.0.0, startDate=1629432000000}"

想要的效果:

ppmCode:19359,
ocsKey:4e2eae551b9042c8a50848b729625dd5, 
projectConfID:9010089422750064157
version:2.0.0, 
startDate:1629432000000
阅读 4.4k
5 个回答

image.png

function str2Obj(str){
    str = str.slice(1,str.length-1);
    var arr = str.split(', ');
    var obj = {};
    arr.forEach(item => {
        var key = item.split('=')[0];
        var value = item.split('=')[1];
        obj[key]=value;
    })
    return obj;
}
"{ppmCode=19359, ocsKey=4e2eae551b9042c8a50848b729625dd5, projectConfID=9010089422750064157, version=2.0.0, startDate=1629432000000}".slice(1,-1).split(',').reduce((res, kv) => {
    const [k,v] = kv.split('=');
    res[k] = v;
    return res;
}, {});

JSON.parse("{ppmCode=19359, ocsKey=4e2eae551b9042c8a50848b729625dd5, projectConfID=9010089422750064157, version=2.0.0, startDate=1629432000000}".replace(/(\w+)=([\w.]+)/g, '"$1":"$2"'))
let a = "{ppmCode=19359, ocsKey=4e2eae551b9042c8a50848b729625dd5, projectConfID=9010089422750064157, version=2.0.0, startDate=1629432000000}"
JSON.parse(a.replace(/=/g, '":"').replace(/\s*,\s*/g,'","').replace(/{\s*/g, '{"').replace(/\s*}/g, '"}'))
var str ="{ppmCode=19359, ocsKey=4e2eae551b9042c8a50848b729625dd5, projectConfID=9010089422750064157, version=2.0.0, startDate=1629432000000}";
Object.fromEntries(str.replace(/(^\{|\}$)/g,'').split(',').map(s=>s.split('=').map(s=>s.trim())))
// {ppmCode: "19359", ocsKey: "4e2eae551b9042c8a50848b729625dd5", projectConfID: "9010089422750064157", version: "2.0.0", startDate: "1629432000000"}

image.png

我的解法:

let objString = "{ppmCode=19359, ocsKey=4e2eae551b9042c8a50848b729625dd5, projectConfID=9010089422750064157, version=2.0.0, startDate=1629432000000}"
let obj = {}

objString.replace(/=/g,':').replace(/(\w*):([\w.]*)/g,function(match,p1,p2,offset,string){
  obj[p1] = p2
})

console.log(obj)

image.png

感觉还不是很稳妥,使用 @zangeci 的方法会好些,不过他那个方法记得处理一下 key 的空格问题。

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