2013-04-30 14 views
14

Quando invio una stringa JSON a un file di jade per lo strappo, sono in grado di stampare solo la stringa nella sua interezza ma non con gli elementi. Come posso stampare elementi specifici o eseguire il loop della stringa JSON?come eseguire il rendering di oggetti json in jade e loop through dei risultati

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} 

output previsto:

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

uscita effettiva:

{"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: } 

risposta

16

Perché stai passando una stringa? Prova questo:

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

Oppure:

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

Su questa linea: each val, key in json È stringata vostro oggetto JS prima (lato server), non stringa i esso per ottenere come oggetto.

Così questa linea:

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

diventa

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

Se siete alla ricerca di un ciclo su una serie di azioni e risultati, quindi utilizzare il suggerimento di Mathieu Amiot più di questo codice:

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