2013-04-30 13 views
14

Kiedy wysyłam ciąg JSON do pliku jade w celu rozłożenia, mogę wydrukować ciąg w całości, ale nie według jego elementów. Jak wydrukować określone elementy lub przechodzić przez ciąg JSON?jak renderować obiekt json w jade i przechodzić między wynikami

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} 

oczekiwany wynik:

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

rzeczywista moc:

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

Odpowiedz

16

Dlaczego przekazujesz ciąg znaków? Spróbuj tego:

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

Albo to zrobić:

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

Na tej linii: each val, key in json Ty stringified swój pierwszy obiekt JS (server-side), nie stringify to, aby ją jak przedmiot.

Więc ten wiersz:

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

staje

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

Jeśli szukasz zapętlenie nad szeregiem działań i rezultatów, a następnie użyć sugestię Mathieu AMIOT za plusa ten kod:

each key in json 
    p !{key.action} !{key.result} 
Powiązane problemy