JSONparsingNode.js中的错误

Node v0.4.12

 var http = require('http'); var options = { host: 'example.com', port: 80, path: 'example.aspx' }; var req = http.request(options, function(res) { var result = ''; res.setEncoding('utf8'); res.on('data', function (chunk) { result += chunk; }); res.on('end', function () { var jsonStr = JSON.stringify(result); var data = JSON.parse(jsonStr); console.log(data['Date']); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); req.end(); 

当我尝试console.log(data)它的作品,但console.log(data['Date'])返回undefined

示例JSONscheme:

{“Date”:“17.03.2012 15:28:47”,“Categories”:[{“ID”:1,“Name”:“Foo”,“URLSlug”:“foo”}]}

我该如何解决这个问题?

谢谢!

如果我删除所有的http请求代码,只是试图parsing和打印parsing的json的Date部分:

 $ cat ex2.js var data = JSON.parse('{"Date":"17.03.2012 15:28:47", "Categories":[{"ID":1,"Name":"Foo","URLSlug":"foo"}]}'); console.dir(data); console.log(data['Date']); $ node ex2.js { Date: '17.03.2012 15:28:47', Categories: [ { ID: 1, Name: 'Foo', URLSlug: 'foo' } ] } 17.03.2012 15:28:47 $ 

示例代码工作正常。 你是否运行你发布的文字代码? 如果你是,那么错误可能是example.com没有返回你作为example.asp的例子给出的JSON。 对我而言,这返回:

 $ curl -I http://example.com/example.asp HTTP/1.0 302 Found Location: http://www.iana.org/domains/example/ Server: BigIP Connection: Keep-Alive Content-Length: 0 

这不是JSON,只是一个302redirect响应。 您可能需要打印出完整的结果,以便查看是否实际上是JSON或其他内容(在本例中为HTML):

 $ cat example.js var http = require('http'); var options = { host: 'google.com', port: 80, path: '/' }; var req = http.request(options, function(res) { var result = ''; res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('got data back!'); result += chunk; }); res.on('end', function () { console.log('request is done'); console.dir(result); var jsonStr = JSON.stringify(result); var data = JSON.parse(jsonStr); console.log(data['Date']); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); req.end(); 

对我来说,这给了:

 $ node example.js got data back! request is done '<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">\n<TITLE>301 Moved</TITLE></HEAD><BODY>\n<H1>301 Moved</H1>\nThe document has moved\n<A HREF="http://www.google.com/">here</A>.\r\n</BODY></HTML>\r\n' undefined 

HTH,

凯尔