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

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

Exemple:

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

Si vous disposez d'un ensemble JS d'objets JSON:

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

Et vous voulez un ensemble 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 disposez d'une seule chaîne JSON représentant un ensemble d'objets:

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

Et vous voulez un ensemble d'objets:

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

Si vous avez un ensemble d'objets:

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

… et vous voulez la représentation de JSON, puis:

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

… ou si vous voulez une matrice 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]); 
 var json = jQuery.parseJSON(s); //If you have jQuery. 

Étant donné que le commentaire semble encombré, utilisez la fonction d'analyse après avoir inclus les crochets dans les guillemets.

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

Modifiez le code ci-dessus à

 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"] ); }); 

Ensuite, utilisez la fonction d'analyse. Cela va certainement fonctionner.

EDIT: Plutôt désolé d'avoir donné le mauvais nom de la fonction. C'est jQuery.parseJSON

Jquery

The json api

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.