Получить конкретное значение из вложенного JSON с помощью Node.js

#node.js

#node.js

Вопрос:

Я совершенно новичок в Node.JS . Я написал узел.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 только то, что находится под миниатюрой. Я хочу сохранить его в переменной и хочу распечатать в консоли.

Комментарии:

1. htttps.request Это нормально?

Ответ №1:

Вы можете использовать JSON.parse() для преобразования вашей строки JSON в объект, а затем вы можете извлечь свое значение, как если бы вы использовали обычный JS-объект, подобный этому:

 let parsedData = JSON.parse(data)
process.stdout.write(console.log(parsedData.image.url)
  

Ответ №2:

Вы можете сделать что-то вроде

 res.on('data', (d) => {
  var jsonObj = JSON.parse(d);
  console.log('width = ', jsonObj.thumbnail.width);
});
  

JSON.parse() преобразует полученную строку в d в объект JavaScript. Затем вы можете получить доступ к объекту с помощью стандартной точечной записи.

Ответ №3:

Проанализируйте строку с помощью JSON.parse(…). Тогда объект является стандартным объектом JavaScript. Вы можете получить к нему доступ, используя либо точечную нотацию (например, object.property), либо через индексную нотацию (например, object[‘свойство’])

Вы также можете вложить их, например, в вашем примере, 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);
});
  

Ответ №4:

Используйте запрос npm

 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 amp;amp; response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);