Javascript 应用程序脚本中出现意外映射结果
我正在使用应用程序脚本并拥有:Javascript 应用程序脚本中出现意外映射结果,javascript,google-apps-script,Javascript,Google Apps Script,我正在使用应用程序脚本并拥有: var json = UrlFetchApp.fetch(url); var objArray = JSON.parse(json) Logger.log(objArray); const indices = objArray.map(({ ' #':id }) => id); Logger.log(indices); Logger.log(objArray)提供: Logger.log(索引)给出: 然而,以下方面: const values
var json = UrlFetchApp.fetch(url);
var objArray = JSON.parse(json)
Logger.log(objArray);
const indices = objArray.map(({ ' #':id }) => id);
Logger.log(indices);
Logger.log(objArray)提供:
Logger.log(索引)给出:
然而,以下方面:
const values = [
{ " #": "4596", " E": "Yes"},
{ " #": "4597", " E": "No"},
{ " #": "4598", " E": "Maybe"},
]
在应用程序中运行时,脚本生成:
[4596,4597,4598]
为什么第一个不起作用
编辑:
json:
这个答案怎么样
问题和解决方法:
从你回复的URL,我可以理解你问题的原因。从URL检索值时https://ssjbhokibi.execute-api.us-east-1.amazonaws.com/dev/hello/get
,我可以确认与示例输入值类似的值,也可以确认相同的情况。当我检查字符时,我可以确认#
的
不是0020
的空格,而是00A0
,它是不间断空格。我想这就是你的问题所在
而且,UrlFetchApp.fetch(url)
检索到的值是HTTPResponse类的对象。因此,在此修改中,getContentText()
用于检索文本值
为了消除您的问题,下面的修改如何
模式1:
在此模式中,通过将0020
回复到00A0
来修改脚本
发件人:
致:
- 当我直接使用
如00A0
发布上述修改后的脚本时,似乎“#”
会通过标记的呈现自动更改为00A0
。因此,在本例中,当您直接看到我的答案的来源时,您可以使用0020
00A0
- 但在这种情况下,我认为修改后的脚本的可读性可能很低。因此,我想提出另一种模式,如下所示
String.fromCharCode(160)
转换00A0
来创建键,并检索值
发件人:
致:
或
注:
- 在示例输入值中,
用于0020
。所以我没注意到这一点。但是当我用#
更新我的答案时,我注意到00A0
会自动更改为00A0
。另一方面,我可以通过单击编辑按钮确认源代码时,0020
使用“#”
。而且,当我确认你的问题来源时,可以确认00A0
使用[{“#”:“4626”的空格,
。当我测试它来呈现标记时,我注意到当标记的呈现运行时,00A0
似乎被更改为00A0
,即使是在脚本中编写的。这样,我无法从您添加的示例输入值中注意到这个问题。在这种情况下,我认为之前发布的相同问题可能也有相同的情况,这可能是重要的一点0020
var json=UrlFetchApp.fetch(url)的json
的示例值
在使用JSON.parse
之前?感谢您添加信息。虽然这是我的猜测,但我还是提出了一个修改点作为答案。您能确认一下吗?我想在您的附加示例值中,当objArray
是[{{code>:“4626”,,},{{code>:“4623”,][/code>,objArray.map({'.'''''':id}=>id);
返回[46264623]
。因此,如果下面的修改不是直接的解决方案,那么作为下一步,您能否提供var value=JSON.stringify(JSON.parse(JSON.getContentText())
)的value
的示例值
如果键的间距与原始值不同,例如,当objArray
的键为'
或'
或'.
时,测试常量索引=objArray.map({'.'id1'.'id2'.'id3}=>id1.'id2'.'id3})如何
?不幸的是,关于这一点,我不确定这是否与您的问题直接相关。很抱歉。我非常确定HTTPResponse将在json.parse上自动转换为字符串。此外,在解析后的日志中,存在keys=value格式。[{#=4626,E=Yes,Assd$=,
。错误可能是在解析之后。但我可能错了,让我们看看op是怎么说的。@感谢您的回答。是的。我非常同意您的意见。因此我建议将其作为我的猜测。例如,如果常量索引=objArray.map(({#':id1,#':id2,#':id3})=>id1 | id2 | id3)
与null
是同一个问题,我想再次确认var json=urlfetchap.fetch(url);
。@从OP提供的url,我可以知道问题的原因和一个要点。发现问题是'.
的空间是00A0
(不间断空间)它不是0020
(空格)。而且,作为一个重要的一点,我们发现,当降价源被呈现时,00A0
会自动替换为0020
。因此,当检查源代码时,它可以确认源代码中使用了00A0
。我认为这是延迟理解该问题的原因之一。@或者回复。是的。当看到降价的呈现结果时,00A0
似乎会自动替换为0020
。这样,我无法很快注意到这一点。但是,当您通过单击“编辑”按钮看到OP的问题和我的答案的降价来源时,您可以确认[{”#“:“4626”的空格
是OP的附加值,我的答案的模式1是00A0
。你可以通过复制和粘贴来检查A0
。这是对我来说新的重要信息。很高兴知道。谢谢。我通常
const values = [
{ " #": "4596", " E": "Yes"},
{ " #": "4597", " E": "No"},
{ " #": "4598", " E": "Maybe"},
const indices = values.map(({ " #" : id }) => id);
console.log(indices);
[4596,4597,4598]
[{" #":"4626"," E":"Yes"," Date":"06/15/20"," County":"St. Martin Parish"," State":"Louisiana"," Acres":"15.00"," Eager":"High"},{" #":"4623"," E":"Yes"," Date":"06/15/20"," County":"Greenville County"," State":"South Carolina"," Acres":"1.50","Eager":"Low"},
var json = UrlFetchApp.fetch(url);
var objArray = JSON.parse(json)
const indices = objArray.map(({ ' #':id }) => id);
var json = UrlFetchApp.fetch(url);
var objArray = JSON.parse(json.getContentText());
const indices = objArray.map(({ ' #':id }) => id);
var json = UrlFetchApp.fetch(url);
var objArray = JSON.parse(json)
const indices = objArray.map(({ ' #':id }) => id);
var json = UrlFetchApp.fetch(url);
var objArray = JSON.parse(json.getContentText());
const indices = objArray.map(({[String.fromCharCode(160) + "#"]: id}) => id);
var json = UrlFetchApp.fetch(url);
var objArray = JSON.parse(json.getContentText());
const indices = objArray.map(e => e[String.fromCharCode(160) + "#"]);