Разбить строку на список строк - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть строка ввода Json, подобная этой:

var x= "[{\"name\":\"ahmed\",\"age\":\"26\"}, 
{\"name\":\"Sam\",\"age\":\"25\"}]"

Я хочу разделить его на список строк из {to} следующим образом, не удаляя разделитель

var list;
 list[0]= {\"name\":\"ahmed\",\"age\":\"26\"}
 list[1]= {\"name\":\"Sam\",\"age\":\"25\"}

использование метода split удаляет разделитель и не дает правильный формат

x= x.replace(/\[\/]/g, '/'); //to remove [ and ]
x= x.replace(  /},/ ,'}\n' ); // does not split the string to list of strings
list = x; // type mismatch error since x is a string and list is array

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Вы можете сначала разобрать его в JSON, а затем использовать map, чтобы составить из него список.

var parsedX = JSON.parse(x);
var list = parsedX.map(x => JSON.stringify(x).replace(/"/g,'\\"'));
0 голосов
/ 13 ноября 2018

Вы можете использовать следующий код для достижения желаемого результата с этим конкретным типом json:

var str = "[{\"name\":\"ahmed\",\"age\":\"26\"}, {\"name\":\"Sam\",\"age\":\"25\"}]";
var list = str.match(/[{][^{}]*[}]/gm);

alert(list)

Не стесняйтесь спрашивать, если у вас есть какие-либо вопросы:

0 голосов
/ 13 ноября 2018

Как прокомментировал Teemu выше, использование JSON.parse является безопасным и правильным способом анализа json.

const x = "[{\"name\":\"ahmed\",\"age\":\"26\"},{\"name\":\"Sam\",\"age\":\"25\"}]";

console.log(JSON.parse(x));
...