我正在尝试访问JSON对象但访问对象时遇到错误。你能不能通过代码让我知道我正在犯的错误。
我正在写两个不同的案例,以便更好地理解我的问题
这是JSON数据:
案例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)
答案 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_base
和business_type
是静态密钥,因此我使用点分表示法来访问其访问值。