如何将具有多个对象的字符串转换为JavaScript对象

时间:2019-03-14 06:53:17

标签: javascript string concat

我需要将 string 下面的内容转换为JavaScript对象

const str = `[{"a":"b"},{"c":"d"}]
[{"a":"b"},{"c":"d"}]`

我正在寻找

之类的对象
[[{"a":"b"},{"c":"d"}],[{"a":"b"},{"c":"d"}]]

我尝试了以下代码

const regex = /(\n)/gm;
const str = `[{"a":"b"},{"c":"d"}]
[{"a":"b"},{"c":"d"}]`;
const subst = `,`;

let result = str.replace(regex, subst);
console.log(result);
JSON.parse(result)

得到下面的输出

[{"a":"b"},{"c":"d"}],[{"a":"b"},{"c":"d"}]

JSON.Parse()给出以下错误

JSON.parse(result)
undefined:1
[{"a":"b"},{"c":"d"}],[{"a":"b"},{"c":"d"}]
                     ^

SyntaxError: Unexpected token , in JSON at position 21
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (C:\regextest.js:11:6)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

4 个答案:

答案 0 :(得分:1)

const str = `[{"a":"b"},{"c":"d"}]
[{"a":"b"},{"c":"d"}]`
console.log(str.split("\n").map(JSON.parse))

答案 1 :(得分:0)

要将字符串转换为对象,请使用JSON.parse方法:

JSON.parse('{ "name":"John", "age":30, "city":"New York"}')

希望这会有所帮助。

答案 2 :(得分:0)

使用 JSON.parse 方法可以将其转换,但是必须将有效的字符串传递给其中

var str = '[[{"a":"b"},{"c":"d"}],[{"a":"b"},{"c":"d"}]]';
console.log(str);
var obj = JSON.parse(str);
console.log(obj);

答案 3 :(得分:0)

我能够解决这个问题,这是代码

const regex = /(\n)/gm;
const str = `[{"a":"b"},{"c":"d"}]
[{"a":"b"},{"c":"d"}]`;
const subst = `;`

let result = str.replace(regex, subst);

result = result.split(';')
let data = []
result.forEach(item => {
  if (item.length > 0) {
    data.push(JSON.parse(item))
  }
})
console.log(data);

输出

[ [ { a: 'b' }, { c: 'd' } ], [ { a: 'b' }, { c: 'd' } ] ]