web-dev-qa-db-fra.com

Convertir un tableau de chaînes d'objet JSON en un tableau d'objets JS

Je voudrais convertir un tableau de JSON String en tableau d'objets JSON sans parcourir en boucle chaque élément et les analyser à l'aide de JSON.parse.

Exemple:

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

Si vous avez un tableau JS d'objets JSON:

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

et vous voulez un tableau d'objets:

// 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(',')+']');

Voir les tests de vitesse pour les comparaisons de navigateurs.


Si vous avez une seule chaîne JSON représentant un tableau d'objets:

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

et vous voulez un tableau d'objets:

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

Si vous avez un tableau d'objets:

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

… Et vous voulez une représentation JSON pour cela, alors:

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

… Ou si vous voulez un tableau JavaScript de chaînes JSON, alors:

// 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]);
44
Phrogz
var json = jQuery.parseJSON(s); //If you have jQuery.

Comme le commentaire semble encombré, veuillez utiliser la fonction d'analyse après avoir placé ces crochets entre guillemets.

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

Changez le code ci-dessus en

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

Par exemple:

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

    s = jQuery.parseJSON(s);

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

Et utilisez ensuite la fonction d'analyse. Cela fonctionnera sûrement.

EDIT: Extrêmement désolé d’avoir donné le mauvais nom de fonction. c'est jQuery.parseJSON

Jquery

Le json api

6
KBN

Si vous avez vraiment:

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

alors simplement:

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

Voici une démo.

0
Ry-