Google Apps Script中JSON.parse将"0XBTC"转为11的问题排查与解决
问题:JSON.parse解析时键名"0XBTC"被转为数字11的原因与解决方法
问题描述
从API获取的JSON结构如下:
{ "data": { "artemis_ids": {}, "symbols": { "0XBTC": { "price": 2.37 } } } }
在Google Apps Script中执行以下代码时,控制台输出显示键名"0XBTC"被意外转换为数字11:
console.log("content", content); console.log("content json", JSON.parse(content));
原因分析
这是Google Apps Script控制台的显示bug,并非JSON.parse本身的问题:
- 控制台在渲染对象时,会错误地将以
0X开头的键名识别为十六进制数,0XB对应的十进制值是11,所以显示时截断了后续字符并替换成了11。 - 实际上
JSON.parse解析后的对象键名仍然是字符串"0XBTC",并没有被修改,只是控制台的展示出了问题。
解决方法
- 验证真实键名:通过
Object.keys()方法查看解析后对象的键名,确认键名未被篡改:const parsedData = JSON.parse(content).data.symbols; console.log("真实键名:", Object.keys(parsedData)); // 输出 ["0XBTC"] - 正确查看完整对象:如果需要查看完整的对象结构,将解析后的对象转为JSON字符串再打印,避免控制台的错误解析:
console.log("完整解析结果:", JSON.stringify(JSON.parse(content), null, 2)); - 业务逻辑不受影响:实际代码中使用键名"0XBTC"访问属性时完全正常,不需要修改解析逻辑,只需注意控制台的显示误导即可。
内容的提问来源于stack exchange,提问作者user2285985
相关产品推荐
相关产品推荐

