我对Node.JS完全陌生。我已经编写了Node.JS代码,并在JSON文件中获取了响应。 JSON为嵌套格式。我想获取,存储在变量中并在嵌套JSON中仅打印一个值。
代码:
var https = require('https');
var optionget = {
host : 'api-dev.dataoverflow.com',
port : 443,
path : '/test1/test2/MR0000091/benifits?latency=RTIME',
method : 'GET',
HEADERS: {
'Authorization' : 'Basic Qjrfrfhurhfurhjfr2839gbfwj==',
'X-PruAppID : 'PlainCardPortal'
}
};
console.info(optionsget)
var reqGet = htttps.request(optionsget, function(res) {
console.log("statusCode: ", res.statusCode);
res.on('data', function(d) {
process.stdout.write(d);
});
});
reqGet.end();
reqGet.on('error', function(e) {
console.error(e);
});
var optionsgetmsg = {
host : 'api-dev.dataoverflow.com',
port : 443,
method : 'GET'
};
console.info(optionsgetmsg);
var reqGet = https.request(optionsget, function(res) {
console.log("statusCode: ", res.statusCode);
res.setEncoding('utf-8')
res.on('data', function(data) {
process.stdout.write(data);
});
});
reqGet.end();
reqGet.on('error', function(e) {
console.error(e);
});
获取整个JSON:
{
"id": "0001",
"type": "donut",
"name": "Cake",
"image":
{
"url": "images/0001.jpg",
"width": 200,
"height": 200
},
"thumbnail":
{
"url": "images/thumbnails/0001.jpg",
"width": 32,
"height": 32
}
}
我只想获取位于缩略图下的width=32
。我想将其存储在变量中,并希望在控制台中打印。
答案 0 :(得分:1)
您可以做类似的事情
res.on('data', (d) => {
var jsonObj = JSON.parse(d);
console.log('width = ', jsonObj.thumbnail.width);
});
JSON.parse()会将d
中接收到的字符串转换为JavaScript对象。然后,您可以通过标准点符号访问该对象。
答案 1 :(得分:1)
使用JSON.parse(...)解析字符串。然后,该对象是标准JavaScript对象。您可以使用点表示法(例如object.property)或通过索引表示法(例如object ['property'])访问它
您还可以嵌套这些内容,例如您的示例中的data.thumbnail.width
res.on('data', (d) => {
let data = JSON.parse(d);
let width = data.thumbnail.width;
console.log(width);
});
但是,如果缩略图可能不确定,则应进行检查。
res.on('data', (d) => {
let data = JSON.parse(d);
let width = undefined;
if (data.thumbnail) width = data.thumbnail.width;
console.log(width);
});
答案 2 :(得分:0)
您可以使用JSON.parse()
来将JSON字符串转换为对象,然后可以像常规JS对象一样检索值:
let parsedData = JSON.parse(data)
process.stdout.write(console.log(parsedData.image.url)
答案 3 :(得分:0)
var request = require('request');
var options = {
url: 'api-dev.dataoverflow.com:443/test1/test2/MR0000091/benifits?latency=RTIME',
headers: {
'Authorization': 'Basic Qjrfrfhurhfurhjfr2839gbfwj==',
'X-PruAppID': 'PlainCardPortal'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);