Quel est le meilleur moyen de convertir un tableau javascript multidimensionnel en JSON?
Réponses
Trop de publicités?Les plus populaires, frameworks JavaScript ont JSON les fonctions de l'utilitaire inclus. Par exemple, jQuery a une fonction qui appelle directement une url et charges du résultat JSON comme un objet : http://docs.jquery.com/Getjson
Cependant, vous pouvez obtenir un open-source JSON et l'analyseur de stringifier de l'json site web :
https://github.com/douglascrockford/JSON-js
Ensuite, il suffit d'inclure le code et utiliser le JSON.stringify() la méthode sur votre tableau.
La "meilleure" façon a été fournie par les autres affiches. Si vous n'avez pas besoin de la pleine fonctions de codage de référence des bibliothèques, et seulement besoin d'encoder des tableaux simples, alors essayez ceci:
<!DOCTYPE html> <html> <head> <titre>les fonctions Simples pour l'encodage des tableaux Javascript en JSON</title> <script type="text/javascript"> de la fenêtre.onload = function() { var a = [ [0, 1, '2', 3], ['0', '1', 2], [], ['mf', 'cb'] ], b = [ 0, '1', '2', 3, 'woohoo!' ]; alert(array2dToJson(a, 'a', '\n')); alert(array1dToJson(b, 'b')); }; fonction array2dToJson(a, p, nl) { var i, j, s = '{"' + p + '":['; nl = nl || "; for (i = 0; i < un.length; ++i) { s += nl + array1dToJson(a[i]); si (i < un.length - 1) { s += ','; } } s += nl + ']}'; return s; } fonction array1dToJson(a, p) { var i, s = '['; for (i = 0; i < un.length; ++i) { if (typeof a[i] == 'string') { s += '"' + a[i] + '"'; } else { // supposons type de numéro s += a[i]; } si (i < un.length - 1) { s += ','; } } s += ']'; if (p) { de retour '{"' + p+"": '+ s + '}'; } return s; } </script> </head> <body> </body> </html>
Oups! Viens de réaliser que j'ai répondu à une vieille question. désolé
Pas sûr que je comprends votre question, mais si vous essayez de convertir l'objet en chaîne de caractères JSON, alors vous devriez regarder le natif de prise en charge de JSON dans tous les nouveaux navigateurs. Voici Resig de post sur elle. Pour les navigateurs qui ne supportent pas encore essayer le json2.js de la bibliothèque. JSON.stringify(obj) va convertir votre objet à une chaîne JSON.
Cela convertira toutes les combinaisons de tableaux dans les objets et vice versa, y compris les noms de fonction:
function isArray(a){var g=a.constructor.toString();
if(g.match(/function Array()/)){return true;}else{return false;}
}
function objtostring(o){var a,k,f,freg=[],txt; if(typeof o!='object'){return false;}
if(isArray(o)){a={'t1':'[','t2':']','isarray':true}
}else {a={'t1':'{','t2':'}','isarray':false}}; txt=a.t1;
for(k in o){
if(!a.isarray)txt+="'"+k+"':";
if(typeof o[k]=='string'){txt+="'"+o[k]+"',";
}else if(typeof o[k]=='number'||typeof o[k]=='boolean'){txt+=o[k]+",";
}else if(typeof o[k]=='function'){f=o[k].toString();freg=f.match(/^function\s+(\w+)\s*\(/);
if(freg){txt+=freg[1]+",";}else{txt+=f+",";};
}else if(typeof o[k]=='object'){txt+=objtostring(o[k])+",";
}
}return txt.substr(0,txt.length-1)+a.t2;
}
Vous pouvez utiliser la fonction encoder de cette bibliothèque .