Как получить пару ключ-значение из тела объекта в JavaScript при использовании модуля запроса

1

Я создаю приложение, в котором я хочу использовать некоторые данные из JSON, который создается другим js файлом. Вот код, который генерирует JSON

var request = require('request');

module.exports = {
foo:
request('https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/c1d1e5d6-fe5c-42de-8713-60f272a3b63e?subscription-key=d3d3e4dfa8744be9b4ae47558df8fc5a&timezoneOffset=0&verbose=true&q=hey',function (error, response, body) {
  console.log('error:', error); // Print the error if one occurred 
  console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received 
  console.log(body);
})
};

Меня интересует объект тела, который дает следующее содержание -

{
  "query": "hey",
  "topScoringIntent": {
    "intent": "Help",
    "score": 0.500165462
  },
  "intents": [
    {
      "intent": "Help",
      "score": 0.500165462
    },
    {
      "intent": "None",
      "score": 0.10364107
    },
    {
      "intent": "SearchHotels",
      "score": 0.00249445555
    },
    {
      "intent": "ShowHotelsReviews",
      "score": 9.451727E-06
    }
  ],
  "entities": []
}

Теперь я хочу получить доступ к значению намерения из элемента topScoringIntent. Это в другой JS файл. Я пробовал использовать body [1].intend, но он дает неопределенные значения. Я очень новичок в javascript и нуждаюсь в очень базовом коде для этого. Пожалуйста, дайте несколько предложений по этому вопросу. Также PLZ сказать мне, если это может быть решена телом-парсером, и если да, то как?

Обновление - вот код, в котором я хочу использовать body ['topScoringIntent']. Замысел как глобальный.

require('dotenv-extended').load();

var builder = require('botbuilder');
var restify = require('restify');
var Store = require('./store');
var spellService = require('./spell-service');
var request = require('request');
var myJSON = require("JSON");
var fs = require('fs');
//var window = window;
var request = require("request");
var myJSON = require("JSON");

var globalVar = [];

// Setup Restify Server
var server = restify.createServer();

server.listen(process.env.port || process.env.PORT || 3978, function () {
    console.log('%s listening to %s', server.name, server.url);
});
// Create connector and listen for messages
var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});
server.post('/api/messages', connector.listen());



function getMyBody(url, callback) {
  request({
    url: 'https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/c1d1e5d6-fe5c-42de-8713-60f272a3b63e?subscription-key=d3d3e4dfa8744be9b4ae47558df8fc5a&timezoneOffset=0&verbose=true&q=hey',
    json: true
  }, function (error, response, body) {
    if (error || response.statusCode !== 200) {
      return callback(error || {statusCode: response.statusCode});
    }

    global.topScoringIntent = body['topScoringIntent'].intent;
    //if(body['topScoringIntent'].intent == 'Help');
    //console.log('yay');
    callback(null, body);  
  });

}

getMyBody('https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/c1d1e5d6-fe5c-42de-8713-60f272a3b63e?subscription-key=d3d3e4dfa8744be9b4ae47558df8fc5a&timezoneOffset=0&verbose=true&q=hey', function(err, body) {
  if (err) {
    console.log(err);
  } 
})

if(body['topScoringIntent'].intent == 'Help');
    console.log('success');
Теги:

2 ответа

0

Это должно сработать для вас

console.log(response.topScoringIntent.intent);
  • 0
    Благодарю. Я пытался с телом. [TopScoringIntent] .intent и его работа. Теперь у вас есть идея, как я могу использовать это в глобальном масштабе? я могу присвоить его какой-то глобальной переменной? Если вы знаете, пожалуйста, скажите мне, как я могу это сделать. Потому что я попробовал это с window.myvar = myvar, но это было с ошибкой.
  • 0
    Я бы предпочел создать глобальный объект и присвоить этой переменной свойство, см. Ниже. //////////////////////// Сначала создайте объект "var globalVar = [];" //////////////////////// Второй создать переменную //////////////////////// / в вашем случае "global.topScoringIntent = body. [topScoringIntent] .intent" ////////////////////////////// и в любом другом месте Вы можете просто вызвать «global.topScoringIntent»
Показать ещё 4 комментария
-1

body.topScoringIntent.intent вернет "Помощь".

Чтобы использовать его глобально, вы можете установить var:

var body = {
  "query": "hey",
  "topScoringIntent": {
    "intent": "Help",
    "score": 0.500165462
  },
  "intents": [
    {
      "intent": "Help",
      "score": 0.500165462
    },
    {
      "intent": "None",
      "score": 0.10364107
    },
    {
      "intent": "SearchHotels",
      "score": 0.00249445555
    },
    {
      "intent": "ShowHotelsReviews",
      "score": 9.451727E-06
    }
  ],
  "entities": []
}

var result = body.topScoringIntent.intent;

И затем используйте результат где-то еще:

console.log(result);
  • 0
    Извините моя ошибка. думал, что он отвечает на его вопрос. Спасибо за разъяснение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню