发出从 App Script UrlFetchApp.fetch 命令返回的解析字典
Issue parsing dictionary returned from App Script UrlFetchApp.fetch command
通过简单的 API 调用解析从 UrlFetchApp.fetch 返回的字典时出现问题。
代码如下:
var HTTPResponse = UrlFetchApp.fetch('<myURL>', options);
其中选项包括 headers 和表单数据,并且 HTTPResponse 被转换为 JSON object,如下所示:
var results = JSON.parse(HTTPResponse);
来自 returns 的 HTTPResponse 是这样的:
{"Category 1": "Value 1", "Category 2": "Value 2",
"Category 3": "Value 3", "Processing Team": "Processing Team 1”}
然后,当我这样做时:结果["Category 1"] 我得到 "undefined" 作为值,这意味着 "Category 1" 不是字典中的项目。
有关 object 或 API 调用返回的内容类型的问题阻止了该词典的解析。可以在 Python 解释器中解析同一个字典。
我错过了什么?看起来很明显。
感谢任何提示!
你不应该解析 returned HTTPResponse
您应该做的第一件事是检查响应代码是否为 200,然后将内容获取为文本,然后将文本解析为 JSON。 HTTPResponse
实际上不是 returned 有效载荷。使用 HTTPResponse class.
的 getContentText()
方法检索 return
var HTTPResponse = UrlFetchApp.fetch('<myURL>', options);
if (HTTPResponse.getResponseCode() !== 200) {
throw new Error("Request Failed: " + HTTPResponse.getContentText());
return;
}
var results = HTTPResponse.getContentText();
results = JSON.parse(results);
HTTPResponse
不是 JavaScript JSON。它是一个对象,如果使用 typeof
测试数据类型,它将评估为一个对象,但它无法正确解析。当您尝试解析 HTTPResponse 时,您正在尝试解析已经是对象的东西,它不是 JavaScript 对象,而是 Apps 脚本 Class.
通过简单的 API 调用解析从 UrlFetchApp.fetch 返回的字典时出现问题。
代码如下:
var HTTPResponse = UrlFetchApp.fetch('<myURL>', options);
其中选项包括 headers 和表单数据,并且 HTTPResponse 被转换为 JSON object,如下所示:
var results = JSON.parse(HTTPResponse);
来自 returns 的 HTTPResponse 是这样的:
{"Category 1": "Value 1", "Category 2": "Value 2",
"Category 3": "Value 3", "Processing Team": "Processing Team 1”}
然后,当我这样做时:结果["Category 1"] 我得到 "undefined" 作为值,这意味着 "Category 1" 不是字典中的项目。
有关 object 或 API 调用返回的内容类型的问题阻止了该词典的解析。可以在 Python 解释器中解析同一个字典。
我错过了什么?看起来很明显。
感谢任何提示!
你不应该解析 returned HTTPResponse
您应该做的第一件事是检查响应代码是否为 200,然后将内容获取为文本,然后将文本解析为 JSON。 HTTPResponse
实际上不是 returned 有效载荷。使用 HTTPResponse class.
getContentText()
方法检索 return
var HTTPResponse = UrlFetchApp.fetch('<myURL>', options);
if (HTTPResponse.getResponseCode() !== 200) {
throw new Error("Request Failed: " + HTTPResponse.getContentText());
return;
}
var results = HTTPResponse.getContentText();
results = JSON.parse(results);
HTTPResponse
不是 JavaScript JSON。它是一个对象,如果使用 typeof
测试数据类型,它将评估为一个对象,但它无法正确解析。当您尝试解析 HTTPResponse 时,您正在尝试解析已经是对象的东西,它不是 JavaScript 对象,而是 Apps 脚本 Class.