NodeJS ...将 JSON 保存到变量
NodeJS... Saving JSON to a Variable
我是 NodeJS 的新手,但我环顾四周,似乎无法在下面找到解决我的问题的方法。我敢肯定这很简单,但在此先感谢您能给我的所有帮助!
我正在尝试通过 NodeJS 制作一个简单的 JSON 抓取工具。我所需要的只是将 JSON 存储到一个变量中。问题是,我正在使用 Require,他们的示例只是将其记录到控制台。我尝试在它登录到控制台后添加一个变量,但我只是变得不确定。下面是我的代码,到目前为止它非常简单:)
// var jsonVariable; Doesn't work, shown as a test
function getJSON(url){
var request = require("request")
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body) // Print the json response
//return body; This doesn't work, nor does making a global variable called json and assigning it here. Any ideas?
//jsonVariable = body; // This also doesn't work, returning undefined even after I've called the function with valid JSON
}
})
}
再次感谢您能给我的任何帮助:)
如果您使用 'return body' 它 return 到哪里?该函数作为 request() 函数的参数被调用。您也不能在匿名函数中定义变量,因为您将无法在该范围之外访问它。
您需要做的是在 function getJSON()
之外定义一个变量,然后将正文保存到该变量中。
例如,
var result;
function getJSON(url){
var request = require("request")
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
result = body;
}
});
}
问题是 request
方法是异步的,但您正在尝试同步 return 结果。您需要发出一个同步请求(这对于您正在使用的 request
包似乎是不可能的),或者传递一个回调函数,以便在请求成功响应时调用。例如:
var request = require("request")
function getJSON(url, callback) {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
callback(body);
}
});
}
getJSON('http://example.com/foo.json', function (body) {
console.log('we have the body!', body);
});
我是 NodeJS 的新手,但我环顾四周,似乎无法在下面找到解决我的问题的方法。我敢肯定这很简单,但在此先感谢您能给我的所有帮助!
我正在尝试通过 NodeJS 制作一个简单的 JSON 抓取工具。我所需要的只是将 JSON 存储到一个变量中。问题是,我正在使用 Require,他们的示例只是将其记录到控制台。我尝试在它登录到控制台后添加一个变量,但我只是变得不确定。下面是我的代码,到目前为止它非常简单:)
// var jsonVariable; Doesn't work, shown as a test
function getJSON(url){
var request = require("request")
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body) // Print the json response
//return body; This doesn't work, nor does making a global variable called json and assigning it here. Any ideas?
//jsonVariable = body; // This also doesn't work, returning undefined even after I've called the function with valid JSON
}
})
}
再次感谢您能给我的任何帮助:)
如果您使用 'return body' 它 return 到哪里?该函数作为 request() 函数的参数被调用。您也不能在匿名函数中定义变量,因为您将无法在该范围之外访问它。
您需要做的是在 function getJSON()
之外定义一个变量,然后将正文保存到该变量中。
例如,
var result;
function getJSON(url){
var request = require("request")
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
result = body;
}
});
}
问题是 request
方法是异步的,但您正在尝试同步 return 结果。您需要发出一个同步请求(这对于您正在使用的 request
包似乎是不可能的),或者传递一个回调函数,以便在请求成功响应时调用。例如:
var request = require("request")
function getJSON(url, callback) {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
callback(body);
}
});
}
getJSON('http://example.com/foo.json', function (body) {
console.log('we have the body!', body);
});