Преобразование массива строк объекта JSON в массив объектов JS

Я хотел бы преобразовать массив JSON String в массив объекта JSON без прокрутки каждого элемента и проанализировать его с помощью JSON.parse.

Пример:

var s=[
  '{"Select":"11", "PhotoCount":"12"}',
  '{"Select":"21", "PhotoCount":"22"}',
  '{"Select":"31", "PhotoCount":"32"}'];

Ответы

Ответ 1

Если у вас есть JS-массив объектов JSON:

var s=['{"Select":"11","PhotoCount":"12"}','{"Select":"21","PhotoCount":"22"}'];

и вам нужен массив объектов:

// JavaScript array of JavaScript objects
var objs = s.map(JSON.parse);

// ...or for older browsers
var objs=[];
for (var i=s.length;i--;) objs[i]=JSON.parse(s[i]);

// ...or for maximum speed:
var objs = JSON.parse('['+s.join(',')+']');

Смотрите тесты скорости для сопоставлений браузеров.


Если у вас есть одна строка JSON, представляющая массив объектов:

var s='[{"Select":"11","PhotoCount":"12"},{"Select":"21","PhotoCount":"22"}]';

и вам нужен массив объектов:

// JavaScript array of JavaScript objects
var objs = JSON.parse(s);

Если у вас есть массив объектов:

// A JavaScript array of JavaScript objects
var s = [{"Select":"11", "PhotoCount":"12"},{"Select":"21", "PhotoCount":"22"}];

& hellip; для этого вам нужно представление JSON, а затем:

// JSON string representing an array of objects
var json = JSON.stringify(s);

& hellip; или если вам нужен массив JSON для JavaScript, тогда:

// JavaScript array of strings (that are each a JSON object)
var jsons = s.map(JSON.stringify);

// ...or for older browsers
var jsons=[];
for (var i=s.length;i--;) jsons[i]=JSON.stringify(s[i]);

Ответ 2

var json = jQuery.parseJSON(s); //If you have jQuery.

Поскольку комментарий выглядит загроможденным, используйте функцию синтаксического анализа после включения этих квадратных скобок внутри кавычек.

var s=['{"Select":"11","PhotoCount":"12"}','{"Select":"21","PhotoCount":"22"}'];

Измените приведенный выше код на

var s='[{"Select":"11","PhotoCount":"12"},{"Select":"21","PhotoCount":"22"}]';

Например:

$(document).ready(function() {
    var s= '[{"Select":"11","PhotoCount":"12"},{"Select":"21","PhotoCount":"22"}]';

    s = jQuery.parseJSON(s);

    alert( s[0]["Select"] );
});

И затем используйте функцию синтаксического анализа. Это, безусловно, будет работать.

EDIT: Чрезвычайно жаль, что я дал неправильное имя функции. это jQuery.parseJSON

Jquery

json api

Ответ 3

Если у вас действительно есть:

var s = ['{"Select":"11", "PhotoCount":"12"}','{"Select":"21", "PhotoCount":"22"}'];

то просто:

var objs = $.map(s, $.parseJSON);

Здесь демо.