Как преобразовать строку, имеющую структуру с несколькими объектами, в объект JavaScript - PullRequest
0 голосов
/ 14 марта 2019

Мне нужно преобразовать ниже строку в объект 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 ]

1 голос
/ 14 марта 2019

const str = `[{"a":"b"},{"c":"d"}]
[{"a":"b"},{"c":"d"}]`
console.log(str.split("\n").map(JSON.parse))
0 голосов
/ 14 марта 2019

Используя JSON.parse метод, вы можете преобразовать это, но вы должны передать действительную строку в это

var str = '[[{"a":"b"},{"c":"d"}],[{"a":"b"},{"c":"d"}]]';
console.log(str);
var obj = JSON.parse(str);
console.log(obj);
0 голосов
/ 14 марта 2019

Мне удалось решить эту проблему, вот код

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' } ] ]
0 голосов
/ 14 марта 2019

Для преобразования строки в объект используйте метод JSON.parse:

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

Надеюсь, это поможет.

...