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"}'];
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]);
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
Si vous avez vraiment:
var s = ['{"Select":"11", "PhotoCount":"12"}','{"Select":"21", "PhotoCount":"22"}'];
alors simplement:
var objs = $.map(s, $.parseJSON);