Json 谷歌脚本空对象-don';我不明白为什么
我开始编写Google脚本来自动化某些任务,而现在我遇到了一个自己无法解决的问题。我必须说,我既不是应用程序脚本方面的专家,也不是javascript方面的专家 这是我的问题。我调用(私有)RESTAPI来检索一些数据。我得到结果,解析它得到一个Json对象。然后我想在电子表格中写一些属性。由于某些原因,我无法操作嵌套对象 假设我有一个json负载列表:Json 谷歌脚本空对象-don';我不明白为什么,json,google-apps-script,typeerror,Json,Google Apps Script,Typeerror,我开始编写Google脚本来自动化某些任务,而现在我遇到了一个自己无法解决的问题。我必须说,我既不是应用程序脚本方面的专家,也不是javascript方面的专家 这是我的问题。我调用(私有)RESTAPI来检索一些数据。我得到结果,解析它得到一个Json对象。然后我想在电子表格中写一些属性。由于某些原因,我无法操作嵌套对象 假设我有一个json负载列表: { id: 2146904633, status: "in_progress", success_probabilit
{
id: 2146904633,
status: "in_progress",
success_probability: 99,
amount: "0.0",
decision_maker: "Bob Mauranne",
business_contact: {
id: 2142664162,
nickname: "NIL",
}
}
编辑:我粘贴的代码出错(没有声明businessContact,而是声明了一个变量bc)。感谢您的评论:)下面的代码现在是正确的,但仍然不起作用
我是这样理解的(过于简化的)代码:
var response=UrlFetchApp.fetch(url);
var dataAll=JSON.parse(response.getContentText());
var数据,业务联系人;
对于(i=0;i
我的问题是,当我调用businessContact.id时,我得到错误“TypeError:无法从null对象读取属性id”。我不明白,因为我可以从businessContact中看到内容:无论是从日志调用还是从调试器,它都绝对不是null
这似乎只发生在嵌套对象上,因为在简单属性上,我没有任何错误。我在所有嵌套对象上都有同样的问题,不管我到目前为止尝试了什么json负载
我在互联网上搜索了一个解决方案,但没有找到。这可能是非常基本的,但我不能让它工作
有什么想法吗?您从未定义在日志记录程序中使用的“业务联系人”。您定义的是“bc”,而不是“businessContact”。如果您将其更改为Logger.log(bc.id),它应该可以工作
这里是一个精简版的什么你也试图做
function getJSON() {
var url = "your url";
var response = UrlFetchApp.fetch(url).getContentText();
var data = JSON.parse(response)
data.forEach(function(item) {
Logger.log(item.business_contact.id)
})
}
下面是一个获取天气数据的示例
function myFunction() {
var url = "https://www.aviationweather.gov/gis/scripts/TafJSON.php";
var response = UrlFetchApp.fetch(url).getContentText();
var data = JSON.parse(response)
data.features.forEach(function(feature) {
Logger.log(feature.properties.id)
})
}
我终于找到了解决办法。这段代码在一个循环中,有时对象business_contact为null,我没有看到它:| 显然,当我学习一项新技术时,我应该停止工作到深夜
我的错,很抱歉吵闹,谢谢各位的回答和评论。你从来没有给过businessContact一个价值。bc有一个,数据有。我的错,我粘贴的代码出错了。当前代码现在是正确的,但错误仍然存在。感谢示例Lenny,此循环比经典的for更干净。您可以使用“if”检查对象中是否存在属性,以避免类型错误<代码>如果(object.property&&object.property.childproperty){do something}其他{doSomethingElse}
function myFunction() {
var url = "https://www.aviationweather.gov/gis/scripts/TafJSON.php";
var response = UrlFetchApp.fetch(url).getContentText();
var data = JSON.parse(response)
data.features.forEach(function(feature) {
Logger.log(feature.properties.id)
})
}