NODE.js 无法使用 restler 获得的 restful 数据

NODE.js unable to use restful data obtained by restler

我正在使用带有 NODE.JS 的 restler 从实时提要中获取数据。如果我只想在屏幕上显示整个提要,它会很好地工作,但是我想实际抓取提要并过滤它,只发布需要的内容。

这是我的 API 中有效的代码片段

app.get('/cis/public/:crs', function (req, res) {

    fullpath = 'http://(domain)/timetables/search_crs.php?crs='+req.params.crs;

    rest.get(fullpath).on('complete', function(result) {
        if (result instanceof Error) {
            console.log('Error:', result.message);
            this.retry(1000); // try again after 1 sec
        } else {
            res.send(result);
        }
    });

});

这会在屏幕上显示完整的提要,但格式不符合我的预期。

这是我想做的事情的一个例子,如果我使用本地 JSON 文件,这很好用.. 例如,如果我输入

var results = JSON.parse(fs.readFileSync('./data/ppm.json', 'utf8'));

然而,当以下列格式使用 restful 时,我得到了一个失败

app.get('/cis/public/:crs', function (req, res) {

    fullpath = 'http://(domain)/timetables/search_crs.php?crs='+req.params.crs;

    rest.get(fullpath).on('complete', function(result) {
        if (result instanceof Error) {
            console.log('Error:', result.message);
            this.retry(1000); // try again after 1 sec
        } else {
            var National = result.GetStationBoardResult.locationName;
            res.send(National);
        }
    });

});

抛出的错误是

            var National = result.GetStationBoardResult.locationName;
                                                       ^
TypeError: Cannot read property 'locationName' of undefined

如何在节点内使用从 restler 获得的数据,而不仅仅是在屏幕上显示。

这是返回的示例(顶部)JSON

{
  "GetStationBoardResult": {
    "generatedAt": "2015-03-18T10:49:36.9120348+00:00",
    "locationName": "Swindon",
    "crs": "SWI",
    "platformAvailable": true,
    "trainServices": {

谢谢

编辑:这是最后一段代码,现在可以让我使用 JSON 来使用它。

app.get('/cis/public/:crs/:total', function (req, res) {

    fullpath = 'http://(domain)/timetables/search_crs.php?crs='+req.params.crs+'&total='+req.params.total;

    rest.get(fullpath).on('complete', function(result) {
        if (result instanceof Error) {
            console.log('Error:', result.message);
            this.retry(1000); // try again after 1 sec
        } else {
            var Results = JSON.parse(result);
            res.send(Results);
        }
    });

});

我现在可以使用结果执行额外的操作。并将 JSON 分解为更有用(和过滤)的信息

当你 console.log

时会发生什么
result

根据错误,您的对象结果没有名为

的 属性
GetStationBoardResult

编辑:由于结果是一个字符串而不是一个对象,它将使用以下方法解决:

var National = JSON.parse(result).GetStationBoardResult.locationName;