[英]how to render json object in jade and loop through results
當我將一個JSON字符串發送到jade文件進行rending時,我只能打印出整個字符串,而不是它的元素。 如何打印特定元素或循環訪問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}
預期產量:
{"action":"date +%s","result":"1367263074"}
1367263074
---
action: date +%s
result: 1367263074
實際產量:
{"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: }
你為什么要傳遞一個字符串? 試試這個:
var ob = { action:"date +%s", result:"1367263074"};
res.render('index', { layout : 'layout', json: ob });
或者這樣做:
-var ob = JSON.parse(json)
-for(var prop in ob)
p #{prop}: #{ob[prop]}
在這一行: each val, key in json
你首先將你的JS對象(服務器端)進行字符串化,不要將它字符串化以將其作為對象。
所以這一行:
res.render('index', { layout : 'layout', json: JSON.stringify(json_string) });
變
res.render('index', { layout : 'layout', json: json_string });
如果您正在尋找循環一系列操作和結果,那么請使用Mathieu Amiot的建議加上以下代碼:
each key in json
p !{key.action} !{key.result}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.