Comment rendre l'objet json dans jade et boucler les résultats

Lorsque j'envoie une chaîne JSON à un fichier jade pour déchiffrer, je ne peux qu'imprimer la chaîne dans sa totalité, mais pas par ses éléments. Comment imprimer des éléments spécifiques ou faire une boucle dans la chaîne JSON?

App.js:

var http = require('http'), express = require('express'), net = require('net'); var app = express(); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.logger('dev')); app.use(express.static(__dirname + '/public')); app.get('/', function (req, res) { var json_string = {"action":"date +%s","result":"1367263074"}; res.render('index', { layout : 'layout', json: JSON.stringify(json_string) }); }) app.listen(3000); 

Layout.jade:

 !!!5 html head body p !{json} p !{json.result} p --- each val, key in json p #{key}: #{val} 

production attendue:

 {"action":"date +%s","result":"1367263074"} 1367263074 --- action: date +%s result: 1367263074 

Sortie réelle:

 {"action":"date +%s","result":"1367263074"} --- 0: { 1: " 2: a 3: c 4: t 5: i 6: o 7: n 8: " 9: : 10: " 11: d 12: a 13: t 14: e 15: 16: + 17: % 18: s 19: " 20: , 21: " 22: r 23: e 24: s 25: u 26: l 27: t 28: " 29: : 30: " 31: 1 32: 3 33: 6 34: 7 35: 2 36: 6 37: 3 38: 0 39: 7 40: 4 41: " 42: } 

Pourquoi passez-vous une chaîne? Essaye ça:

 var ob = { action:"date +%s", result:"1367263074"}; res.render('index', { layout : 'layout', json: ob }); 

Ou faites ceci:

 -var ob = JSON.parse(json) -for(var prop in ob) p #{prop}: #{ob[prop]} 

Sur cette ligne: each val, key in json entrez each val, key in json Vous avez stringé votre objet JS en premier (côté serveur), ne le modifiez pas pour l'obtenir comme objet.

Donc, cette ligne:

 res.render('index', { layout : 'layout', json: JSON.stringify(json_string) }); 

devient

 res.render('index', { layout : 'layout', json: json_string }); 

Si vous cherchez à boucler un éventail d'actions et de résultats, utilisez la suggestion de Mathieu Amiot plus ce code:

 each key in json p !{key.action} !{key.result}