41 votes

Convertir un tableau javascript multidimensionnel en JSON?

Quel est le meilleur moyen de convertir un tableau javascript multidimensionnel en JSON?

27voto

Wookai Points 8647

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.

15voto

Mike Foster Points 155

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é

5voto

Jerry Points 477

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.

1voto

denes borsos Points 11

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;
}
 

0voto

Kev Points 5046

Vous pouvez utiliser la fonction encoder de cette bibliothèque .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X