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.