我有一个API返回的json结构:
{
"data": {
"artemis_ids": {},
"symbols": {
"0XBTC": {
"price": 2.37
}
}
}
}
字符串
当我在Google apps脚本中使用JSON.parse时,“0XBTC”字符串以某种方式转换为数字11。下面是console.log的结果:
console.log("content", content);
console.log("content json", JSON.parse(content));
型
的数据
你知道为什么会发生这种情况以及如何解决吗?
var content = `
{
"data": {
"artemis_ids": {},
"symbols": {
"0XBTC": {
"price": 2.37
}
}
}
}
`;
console.log("content", content);
console.log("content json", JSON.parse(content));
型
2条答案
按热度按时间svgewumm1#
修改要点:
从
content json {data={artemis_ids={}, symbols={11={price=2.37}}}}
(您的显示日志)中,我猜测您可能会使用脚本编辑器禁用V8运行时。但是,当V8运行时被禁用时,反引号就不能使用了。从这种情况下,我也猜测,您的显示片段可能不是您的实际脚本。假设我的猜测是正确的,我测试了以下示例脚本。而且,我用脚本编辑器禁用了V8运行时。
字符串
在没有V8运行时的情况下运行此脚本时,将获得以下结果。
x1c 0d1x的数据
我确认
console.log("content json", JSON.parse(content))
显示content json {data={artemis_ids={}, symbols={11={price=2.37}}}}
。如果我的猜测是正确的,我认为这可能是你目前问题的原因。而且,当我测试下面的脚本时。
型
console.log(sample1)
和console.log(sample2)
如下。型
和/或
型
从这种情况来看,我猜测这种情况可能是一个bug,或者是没有V8运行时的Google Apps Script的当前规范。但是,在当前阶段,当使用脚本编辑器禁用V8运行时,
"runtimeVersion": "DEPRECATED_ES5"
被添加到清单文件(appsscript.json
)。参考文献**为了避免出现这种情况,简单的解决方法是使用脚本编辑器开启V8运行时。**参考
的
这样,上面的脚本
sample()
返回如下。型
和/或
型
0XBTC
被正确地用作密钥。注:
如果需要通过禁用V8运行时来使用脚本,那么使用JSON.parse的polyfill如何?Ref当这反映在示例脚本中时,它变成如下所示。
型
参考文献:
ewm0tg9j2#
我认为这不是代码问题,因为它在node@18和Chrome@latest上运行良好。
x1c 0d1x的数据