如何在jade中呈现json对象并通过结果循环
当我发送一个JSONstring到一个玉文件的时候,我只能打印出整个string,而不是它的元素。 如何打印出特定的元素或通过JSONstring循环?
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: }
为什么你传递一个string? 尝试这个:
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 Object(服务器端)string化,不要将其string化为对象。
所以这一行:
res.render('index', { layout : 'layout', json: JSON.stringify(json_string) });
变
res.render('index', { layout : 'layout', json: json_string });
如果你正在寻找循环的动作和结果数组,然后使用Mathieu Amiot的build议加上这段代码:
each key in json p !{key.action} !{key.result}