使用Javascript将字符串拆分为JS对象或JSON对象

时间:2018-05-02 15:48:42

标签: javascript

我想从一个字符串创建一个JavaScript对象或Json,该字符串由; 分隔。 所以我可以在; 之后拆分字符串,之后我必须在处拆分以创建变量名称和变量值。但是我该怎么做?

字符串:

"MT"[1]:"111";"Medium"[1]:"AAA";"Medium"[2]:"BBB";"Medium"[3]:"CCC";"Medium"[4]:"DDD";"bar"[1]:"24";"bar"[2]:"1,5";"bar"[3]:"3";"bar"[4]:"7,5";"S_Id"[1]:"555";"S_Nr"[1]:"666"

结果必须如下所示:

MT[1] = “111”
Medium[1] = “AAA”
Medium[2]=”BBB” 
Medium[3]=”BBB” 
Medium[4]=”BBB” 
bar[1]=“24“
…

目标是访问具有索引和变量值的变量。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

试试这个



var x = '"MT"[1]:"111";"Medium"[1]:"AAA";"Medium"[2]:"BBB";"Medium"[3]:"CCC";"Medium"[4]:"DDD";"bar"[1]:"24";"bar"[2]:"1,5";"bar"[3]:"3";"bar"[4]:"7,5";"S_Id"[1]:"555";"S_Nr"[1]:"666"';

var obj = {};

var y = x.split(';');

y.forEach(function(itm){
  var z = itm.split(':');
   var key = z[0].split('[')[0].replace(/"/g, '');
  if(!obj.hasOwnProperty(key)) {
    obj[key] = [];
  }
  obj[key].push(z[1].replace(/"/g, ''));
})

console.log(obj)




答案 1 :(得分:0)

尝试(字符串s,r是结果对象-您可以通过更改地图参数中的b=r来更改它)

s.split(";").map( (x,i,a,b=r,y=x.match(/"(.*?)"\[(.*?)]:"(.*)"/),v=b[y[1]]||[]) => {v[y[2]]=y[3];b[y[1]]=v} );

let s = '"MT"[1]:"111";"Medium"[1]:"AAA";"Medium"[2]:"BBB";"Medium"[3]:"CCC";"Medium"[4]:"DDD";"bar"[1]:"24";"bar"[2]:"1,5";"bar"[3]:"3";"bar"[4]:"7,5";"S_Id"[1]:"555";"S_Nr"[1]:"666"'


let r={}  // result

s.split(";").map( (x,i,a,b=r,y=x.match(/"(.*?)"\[(.*?)]:"(.*)"/),v=b[y[1]]||[]) => {v[y[2]]=y[3];b[y[1]]=v} );

Object.assign(this, r) // copy fields from result to "this" (for direct access from JS)

console.log("MT[1] =", MT[1] );
console.log("Medium[1] =", Medium[1] );
console.log("Medium[2]=", Medium[2] );
console.log("Medium[3]=", Medium[3] );
console.log("Medium[4]=", Medium[4] );
console.log("bar[1]=", bar[1] );