繁体   English   中英

在JS中将字符串转换为数组

[英]Convert String to an Array in JS

在我的项目中,我有一个如下的用例:

我有一个如下的响应数组,

(4) [{…}, {…}, {…}, {…}]
0:{header: 0, name: "Name", field: "Id"}
1:{header: 3, name: "LastName", field: "Agreement__c"}
2:{header: 3, name: "LastName", field: "Amount__c"}
3:{header: 3, name: "LastName", field: "BIC__c"}
length:4

从上面我通过使用将上面的数组转换为String,

JSON.stringify(responseArray)并将其存储在字符串字段中。

之后,我想对该字段的值进行动态处理。 因此,当我从字段中获取价值时,如下图所示,

[{"header":0,"name":"Name","field":"Id"}, 
{"header":3,"name":"LastName","field":"Agreement__c"}, 
{"header":3,"name":"LastName","field":"Amount__c"}, 
{"header":3,"name":"LastName","field":"BIC__c"}]

任何人都可以帮助我将上述字符串响应转换为Javascript中的数组,如下所示,

index 0 -> {"header":0,"name":"Name","field":"Id"}
index 1 -> {"header":3,"name":"LastName","field":"Agreement"}

我已经尝试过使用split函数,但是无法满足确切的需求。

将方括号放在字符串的开头和结尾,然后调用JSON.parse

 $ node

 > const text = `{"header":0,"name":"Name","field":"Id"}, 
    {"header":3,"name":"LastName","field":"Agreement"}, 
    {"header":3,"name":"LastName","field":"Amount"}, 
    {"header":3,"name":"LastName","field":"BIC"}`

 > JSON.parse(`[${text}]`)
 [ { header: 0, name: 'Name', field: 'Id' },
   { header: 3, name: 'LastName', field: 'Agreement' },
   { header: 3, name: 'LastName', field: 'Amount' },
   { header: 3, name: 'LastName', field: 'BIC' } ]

您可以使用以下代码示例,首先在字符串的开头附加"["在字符串的末尾附加"[" "]" ,这样您的字符串将被很好地格式化为JSON数组,然后使用JSON.parse内置函数轻松解析它

 a = '['+'{"header":0,"name":"Name","field":"Id"}, {"header":3,"name":"LastName","field":"Agreement"}, {"header":3,"name":"LastName","field":"Amount"}, {"header":3,"name":"LastName","field":"BIC"}'+"]"

 var myarray = JSON.parse(a);

是的, JSON.parse是真正简单的答案。

您只需要一些基本的字符串操作,顺便说一句,我将您的字符串更改为有效的语法

 var str="{\\"header\\":0,\\"name\\":\\"Name\\",\\"field\\":\\"Id\\"},{\\"header\\":3,\\"name\\":\\"LastName\\",\\"field\\":\\"Agreement\\"},{\\"header\\":3,\\"name\\":\\"LastName\\",\\"field\\":\\"Amount\\"},{\\"header\\":3,\\"name\\":\\"LastName\\",\\"field\\":\\"BIC\\"}"; str=str.replace(/},{/g,"}|{"); var arr = str.split("|"); var json = []; for(i=0; i<arr.length; i++){ json.push(JSON.parse(arr[i])); } //console.log(json); console.log(json[0]); console.log(json[1]); 

尝试这个

  var textstr = '[{"header":0,"name":"Name","field":"Id"},{"header":3,"name":"LastName","field":"Agreement"}, {"header":3,"name":"LastName","field":"Amount"}, {"header":3,"name":"LastName","field":"BIC"}]'; var textstr2 = JSON.parse(textstr); console.log(textstr2) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM