Node.js从Rails应用程序中消耗json

时间:2012-04-13 20:21:49

标签: ruby-on-rails ruby-on-rails-3 json node.js ruby-on-rails-3.1

我有一个json字符串(来自我的Rails应用程序):

http://localhost:3000/employees/1.json

如何让我的Node.js应用程序使用这些数据?

这是我现在在我的Node.js应用程序中的代码:

var employees = JSON.parse("http://localhost:3000/employees.json")

这是我得到的错误:

prompt$ node app.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
SyntaxError: Unexpected token h
    - at Object.parse (native)
    - at Object. (/Documents/Coding/dustin/employees.js:19:22)
    - at Module._compile (module.js:441:26)
    - at Object..js (module.js:459:10)
    - at Module.load (module.js:348:31)
    - at Function._load (module.js:308:12)
    - at Module.require (module.js:354:17)
    - at require (module.js:370:17)
    - at Object. (/Documents/Coding/dustin/app.js:34:17)
    - at Module._compile (module.js:441:26)

1 个答案:

答案 0 :(得分:0)

看到这个问题:

Using Node.JS, how do I read a JSON object into (server) memory?

您应首先阅读该文件,然后再解析它。

var employees = JSON.parse(fs.readFileSync('employees.json', 'utf8'));

如果由于某种原因你的Rails应用程序在其他机器上运行,你需要为此发出一个http请求。你可以试试这个:

var site = http.createClient(port, host);

var request = site.request("GET", pathname, {'host' : host});
request.end();

request.on('response', function(response) {
  var json = '';

  response.on('data', function(chunk) {
    json += chunk;
  });

  response.on('end', function () {
    employees = JSON.parse(json);
  });
});