使用Node.js从嵌套JSON获取特定值

时间:2019-03-14 13:30:37

标签: node.js

我对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。我想将其存储在变量中,并希望在控制台中打印。

4 个答案:

答案 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)

使用npm request

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);