J'ai un objet JSON qui ne correspond pas aux normes JSON, et je ne peux pas modifier la structure de l'objet pour le rendre adhéré aux normes JSON.
J'ai besoin de rendre cet objet rendu au milieu d'un bloc JavaScript dans un modèle de jade. L'objet est en fait un objet de configuration qui va dans un bloc de fonction dans le modèle. P>
Voici l'objet. p> Mise à jour forte>
Voici comment je reçois cet objet à partir d'un fichier JS. P> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test"></div>
3 Réponses :
Edit: est l'objet de configuration quelque chose que vous devez sélectionner ou modifier de manière dynamique? Pourriez-vous utiliser un inclus? Sinon, alors le code tampon non évalué ( http://jade-lang.com/reference/code/ A>) Semble être comme la voie à suivre avec la corde passée par Listafile. Solution Solution: P> Edit: meilleure solution que ma proposition originale: p>
<script>
var configObject = {
<% for (var key in configObject) {
if (configObject.hasOwnProperty(key)) { %>
<%- key %>:
<% if (typeof configObject[key] === 'function') { %>
<%- configObject[key].toString() %>
<% } else { %>
<%- JSON.stringify(configObject[key]) %>
<% } %>
<% } } %>
};
</script>
La meilleure solution consiste à me faire preuve de moi quelle que soit la méthode .tostring () code> ajoute des caractères de formatage tels que
\ n code> et
\ t code>. Comment puis-je supprimer ceux-ci aussi?
Édité de sortir \ n et \ t. Également modifié la chaîne de remplacement de la chaîne vide à un seul espace, juste au cas où. Cela nécessitera plus de modifications si vous utilisez des guillemets doubles dans vos fonctions ou si vous utilisez des caractères d'évacuation (vous pouvez jouer avec la regex de remplacement - peut avoir besoin de plusieurs appels de remplacement).
Avoir-le supprimer, les personnages fonctionnent, mais j'ai trouvé que cela interfère avec des commentaires qui sont dans le code // code> commencent ensuite tout le bloc JavaScript. J'ajoute une prime à cela. J'espère que nous pourrons avoir cette dernière partie figurant et je vais jeter la prime de votre façon. Merci :)
@zmanc, édité; J'espère que cela fonctionne pour vous :) - une limitation est que cela ne gère actuellement pas d'objets imbriqués avec le même nom de propriété faisant référence à différentes fonctions.
Pour supprimer de nouveaux caractères de ligne en toute sécurité, les «commentaires» doivent être supprimés d'abord:
p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <pre id="result"></pre>
Cela m'a la plus grande partie, était une petite partie où je devais m'occuper, mais c'était la base des solutions. Merci.
Pour ceux qui sont curieux, voici les deux choses que je devais changer: .replace (/ [\ r \ n \ t] / g, '') code>
.replace (/ \ u007d $ /, '},') code>
Si je comprends votre demande correctement (que vous souhaitez prendre le contenu d'un fichier chargé à l'extérieur, puis le charger dans un
Quel est le problème spécifique? Qu'avez-vous essayé que cela n'a pas fonctionné? Êtes-vous simplement afficher une chaîne?
Mis à jour pour donner le problème actuel.