JSON对象未定义(Nodejs)

时间:2017-01-06 20:22:28

标签: json node.js api express request

我正在尝试访问JSON对象但访问对象时遇到错误。你能不能通过代码让我知道我正在犯的错误。

我正在写两个不同的案例,以便更好地理解我的问题

这是JSON数据:

JSON DATA

案例1:

如果我只是尝试访问company_base对象,我将获得未定义的值

if(!error && response.statusCode == 200){
  console.log("Insurance name is.....");
    var parsedData = JSON.parse(body);
    console.log(parsedData["company_base"]);
  }

结果: 保险名称是...... 未定义

案例2:

我正在附上2张图片。一个包含JSON文本,另一个包含我在尝试访问JSON对象时遇到的错误。

//这是我用来访问对象的代码

   if(!error && response.statusCode == 200){
    console.log("Insurance name is.....");
    var parsedData = JSON.parse(body);
    console.log(parsedData["company_base"][""business_type"]);
   }

保险名称是...... C:\ Users \ Ebbie \ Desktop \ Misc \ mean \ udemy \ the web developer bootcamp \ IntroToApis \ CSG \ app.js:37         的console.log(parsedData [ “company_base”] [ “business_type”]);                                               ^

  

TypeError:无法读取未定义的属性“business_type”       在Request._callback(C:\ Users \ Ebbie \ Desktop \ Misc \ mean \ udemy \ the web developer bootcamp \ IntroToApis \ CSG \ app.js:37:47)       在Request.self.callback(C:\ Users \ Ebbie \ Desktop \ Misc \ mean \ udemy \ the web developer bootcamp \ IntroToApis \ CSG \ node_modules \ request \ request.js:186:22)       在emitTwo(events.js:106:13)       在Request.emit(events.js:191:7)       在请求。 (C:\ Users \ Ebbie \ Desktop \ Misc \ mean \ udemy \ web developer bootcamp \ IntroToApis \ CSG \ node_modules \ request \ request.js:1081:10)       在emitOne(events.js:96:13)       在Request.emit(events.js:188:7)       在IncomingMessage。 (C:\ Users \ Ebbie \ Desktop \ Misc \ mean \ udemy \ web developer bootcamp \ IntroToApis \ CSG \ node_modules \ request \ request.js:1001:12)       在IncomingMessage.g(events.js:291:16)       在emitNone(events.js:91:20)

2 个答案:

答案 0 :(得分:1)

它返回一个对象数组。 parsedData [" company_base"]正在尝试访问阵列上的company_base密钥。

你会想要这样的东西:

parsedData[0]["company_base"]

和..

parsedData[0]["company_base"][""business_type"]

答案 1 :(得分:0)

  

请您仔细阅读代码,让我知道我犯的错误。

您收到undefined因为parsedData是一个元素的数组。请注意json数据开头的[。不是使用parsedData["company_base"]获取值,而是迭代它。

'use strict';

let _ = require('lodash');

if (!error && response.statusCode == 200) {
  let insuranceCompanies = JSON.parse(body);
  _.each(insuranceCompanies, (company) => {
    let companyBase = company.company_base;
    console.log('Insurance name is.....', companyBase.business_type);
  });
}

由于company_basebusiness_type是静态密钥,因此我使用点分表示法来访问其访问值。