Преобразовать строку JSON в массив объектов JSON в Javascript - PullRequest
54 голосов
/ 07 декабря 2010

Я хотел бы преобразовать эту строку

{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}

в массив из 2 объектов JSON. Как мне это сделать?

лучший

Ответы [ 6 ]

87 голосов
/ 07 декабря 2010

Использование jQuery:

var str = '{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}';
var jsonObj = $.parseJSON('[' + str + ']');

jsonObj - ваш JSON-объект.

27 голосов
/ 07 декабря 2010

Как указал Лука, добавьте [] к вашей строке и используйте код ниже:

var myObject = eval('(' + myJSONtext + ')');

, чтобы проверить это, вы можете использовать фрагмент ниже.

var s =" [{'id':1,'name':'Test1'},{'id':2,'name':'Test2'}]";
var myObject = eval('(' + s + ')');
for (i in myObject)
{
   alert(myObject[i]["name"]);
}

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

21 голосов
/ 10 марта 2014

Так просто.

var str = '{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}';
 dataObj = JSON.parse(str);
6 голосов
/ 07 декабря 2010

Добавьте дополнительные [ и ] к началу и концу строки.Это сделает его массивом.Затем используйте eval() или какой-либо безопасный сериализатор JSON, чтобы сериализовать строку и сделать ее настоящим типом данных JavaScript.

Вы должны использовать https://github.com/douglascrockford/JSON-js вместо eval().eval возможен только в том случае, если вы проводите небольшую отладку / тестирование.

4 голосов
/ 07 декабря 2010

Если вы используете jQuery, можно использовать функцию parseJSON , и она предпочтительнее встроенной в JavaScript функции eval().

1 голос
/ 06 июня 2012

Я знаю, что многие люди говорят, что используют eval. функция eval () js вызовет компилятор, и это может предложить ряд угроз безопасности. Лучше избегать его использования, где это возможно. Функция разбора предлагает более безопасную альтернативу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...