2017-09-05 5 views
-1

Ich extrahiere Felder aus einem JSON-Objekt, aber aus irgendeinem Grund werde ich immer undefiniert. Ich habe ein Array in der JSON-Array "Nachtclub". Ich möchte die Daten aus diesem Feld extrahieren und in ein Array einfügen. Wie kann ich darüber gehen? Das habe ich bisher versucht. Ich bin nicht der ausdrücklichen Framework und ich bin etwas besorgt darüber, wie ich bin Parsen der jsonParsen eines JSON-Objekts im Knoten js?

var TelegramBot = require('node-telegram-bot-api'); 
var request = require('request'); 
var http = require('http'); 
var express = require("express"); 
var app = express(); 

var fd = require("./Services.js"); 
var bodyParser = require("body-parser"); 
app.use(bodyParser.urlencoded({extended: false})); 
app.use(bodyParser.json()); 
const TOKEN = process.env.TELEGRAM_TOKEN || '****************'; 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('Hello, world! [helloworld sample;'); 
}).listen(3009); 

telegram = new TelegramBot(TOKEN, { polling: true }); 
telegram.on("text",function (message,req,res) { 

    var messagetext = message.text; 
    var receiver = message.chat.id; //the user receiving the response from the bot 
    var timestamp = message.date; //timestamp 
    var msgid = message.message_id;//message id 
    var sender = message.from.id; //id of the telegram bot 
    console.log("message",messagetext); 
    switch (messagetext) { 
     case "Menu": 
      telegram.sendMessage(sender,"Enter the name of the menu that you would like to choose"); 
      fd.itemcategory().then(function (v) { 
       console.log(v); 
       for (var i = 0; i < 5; i++) { 
        telegram.sendMessage(sender, v[i]); 
       } 
      }); 
      break; 

     case "Nightclub": 
      telegram.sendMessage(sender,"Here are some of the best nightlife in Nairobi"); 
      fd.categorydata("Nightclub").then(function(v){ 
       var obj = v; 


       console.log("entered",obj.info); 




      }); 
      break; 



    } 









}); 







This is the response I am receiving from the api 
    { 
     "info": { 
      "response": "sucess", 
      "nightclub": [ 
       "fjfjkfkf", 
       "jfkfkfkf", 
       "fujfjkfkf", 
       "fjfjfklf", 
       "fjfjfkkf" 
      ] 
     } 
    } 

Dies ist, was ich in meiner Konsole bekommen -

entered undefined 
+0

v.info.nightclub diese geben sollte Diskothek –

+0

@Dinesh: - Ich bin immer undefined – Rachel

+0

console.log tun (v) und prüfen Sie, was Sie bekommen? –

Antwort

2

Sie würde die Variable verwenden

v.info.nightclub 

let obj = { 
 
    "info": { 
 
     "response": "sucess", 
 
     "nightclub": [ 
 
      "fjfjkfkf", 
 
      "jfkfkfkf", 
 
      "fujfjkfkf", 
 
      "fjfjfklf", 
 
      "fjfjfkkf" 
 
     ] 
 
    } 
 
} 
 

 
console.log(obj.info.nightclub);
Von der dass du immer einen String als Eingabe kommentiert es nur

obj = JSON.parse(obj) 

es in ein gültiges JSON-Objekt zu konvertieren verwenden, so gezeigt wird

0

Um es in einem Array zu erhalten, können Sie es durch einen für jeden laufen konnten (oder jquery $ .each), wo Sie auf v.info.nightclub zeigen.

So etwas

var nightclubs = [] 
$.each(v.info, function(index, entry{ 
nightclubs.push(entry.info.nightclub); 
} 
console.log(nightclubs)