web-dev-qa-db-fra.com

comment rendre un objet json en jade et parcourir les résultats

Lorsque j'envoie une chaîne JSON à un fichier jade pour le rendu, je ne peux imprimer la chaîne que dans son intégralité, mais pas par ses éléments. Comment imprimer des éléments spécifiques ou parcourir 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: }
14
Brad.Smith

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]}
16
karaxuna

Sur cette ligne: each val, key in json Vous avez d'abord stratifié votre objet JS (côté serveur), ne le strifiez pas pour l'obtenir en tant qu'objet.

Donc cette ligne:

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

devient

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

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

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