Как разобрать строку в массив в js - PullRequest
0 голосов
/ 13 июня 2018

У меня есть строка, подобная следующей,

var x = "[{"k":"1"}]";
console.log(x[0].K);

Я передаю эту строку, так как получаю с сервера. Она вышла из-под моего контроля.Я хочу отобразить значение 'k', и когда я его вставляю, получаю

  Uncaught SyntaxError: Unexpected identifier

Я знаю, что это связано с "двойными кавычками" внутри и снаружи массива.

Этодаже не позволяет мне разобрать его.

Итак, я подумал

1)Replace "[  and ]" as '[  and ]'  so it becomes

 '[{"k":"1"}]'

2)Then I can parse and get the 'k' value.

var x = "[{"k":"1"}]";
console.log(x.replace(/"[/g," '[ ").replace(/"]"/g," ]'"));

Но все же я получаю ту же самую необъяснимую ошибку идентификатора, кто-нибудь, пожалуйста, предложите мне помочь.*

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Вы по-прежнему используете двойные кавычки вокруг x.

var x = '[{"k":"1"}]';

Используйте JSON.parse, чтобы превратить его в массив:

var array = JSON.parse(x);
console.log(array); // [{ "k": "1" }]
0 голосов
/ 13 июня 2018

Используйте String.prototype.slice , чтобы убрать внешние двойные кавычки из строки, возвращаемой сервером.

Затем используйте JSON.parse:

var x = `"[{"k":"1"}]"`
var x2 = x.slice(1,-1);
var x3 = JSON.parse(x2);
console.log(x)
console.log(x2);
console.log(x3[0]);
console.log(x3[0].k);
0 голосов
/ 13 июня 2018

Нужен ли массив объектов, содержащих строки?

Кажется, вы слишком усложняете, попробуйте

//create a javascript object as x, set the VALUE (1) of KEY (k)
var x = {"k":"1"};
//log the objects k property
console.log(x.k);

Просто поняли, чего вы пытаетесь достичь, воспользуйтесь приведенным ниже ответом, если вы пытаетесь проанализировать JSON, который повторяетсячерез PHP или что-то подобное.

Пример парсинга JSON в массив javascript

var jsonData = '[{"name" : "Apple"}, {"name" : "Pear"} ]';

var parsedJson = JSON.parse(jsonData);
console.log(parsedJson[0]);

parsedJson.forEach(function(fruit){
  console.log(fruit.name);
});
...