Я полный noob в node.js и пытаюсь изучить его с помощью learnyounode. Я застрял в последней проблеме learnyounode - [HTTP JSON API SERVER].
В этом учебнике вызывается URL-адрес для предоставления времени (как iso standard), а сервер node.js должен возвращать ответ json в (k, v), где пара будет k = {«час», «минута», «второй»}.Возвращение строки кодировки JSON от node.js
Мое решение выглядит ниже -
var http = require('http');
var url = require('url');
function get_json(str) {
var result = [];
str = str.substr(str.lastIndexOf('T') + 1);
result['hour'] = Number(str.substring(0, str.indexOf(':')));
str = str.substring(str.indexOf(':') + 1);
result['minute'] = Number(str.substring(0, str.indexOf(':')));
str = str.substring(str.indexOf(':') + 1);
result['second'] = Number(str.substring(0, str.indexOf('.')));
return result;
}
function get_unix(str) {
var result = get_json(str);
result['unix'] = ((result['hour'] * 3600000) +
(result['min'] * 60000) + (result['sec'] * 1000));
return result;
}
var server = http.createServer(function (req, res) {
if (req.method != 'GET') {
return res.write('{ "error": "query-failed" }');
}
var cur_url = url.parse(req.url, true);
if (cur_url['pathname'] == '/api/parsetime') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(get_json(cur_url['query']['iso'])));
} else if (cur_url['pathname'] == '/api/unixtime') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(get_unix(cur_url['query']['iso'])));
}
console.log(get_json(cur_url['query']['iso']));
console.log(JSON.stringify(get_json(cur_url['query']['iso'])));
res.end();
});
server.listen(process.argv[2]);
Но решение не работает правильно, потому что JSON.stringify()
возвращается пустой [] строку. Что мне здесь не хватает?
Выход текущего решения по:
[ hour: 7, minute: 27, second: 38 ]
[]
[]
[]
[ hour: 7, minute: 27, second: 38 ]
[]
Что у вас есть в 'cur_url ['query'] ['iso']'? – Lewis
Можете ли вы создать скрипку pls. – marcel
Попробуйте результат = {} вместо = [] – CFrei