POSTMAN解析以数字开头的JSON键值报错问题解决咨询
问题
在Postman中解析API返回的JSON响应时,需要提取一个以数字开头的键值。响应示例如下:
"data": { "354a24d506af956a0ccf14444b18da38834eabbd": "very good" }
使用以下代码时出现错误:
var jsonData = JSON.parse(responseBody); postman.setGlobalVariable("poziomoceny", jsonData.data.354a24d506af956a0ccf14444b18da38834eabbd);
错误提示:
an identifier or keyword cannot immediately follow a numeric literal
尝试了以下写法也无效:
postman.setGlobalVariable("poziomoceny", jsonData.data.(354)a24d506af956a0ccf14444b18da38834eabbd);
var po = "354a24d506af956a0ccf14444b18da38834eabbd"; postman.setGlobalVariable("poziomoceny", jsonData.data.po);
请问该如何解决?
解决方法
在JavaScript中,访问以数字开头或包含特殊字符的对象属性时,不能使用.点语法,必须使用方括号[]语法,以下两种写法都有效:
- 直接将键名以字符串形式传入方括号:
var jsonData = JSON.parse(responseBody); postman.setGlobalVariable("poziomoceny", jsonData.data["354a24d506af956a0ccf14444b18da38834eabbd"]);
- 先将键名存入变量,再通过变量访问:
var jsonData = JSON.parse(responseBody); var key = "354a24d506af956a0ccf14444b18da38834eabbd"; postman.setGlobalVariable("poziomoceny", jsonData.data[key]);
之前写法无效的原因
- 点语法要求属性名必须是合法的JavaScript标识符(不能以数字开头),所以
jsonData.data.354xxx的写法会触发语法错误。 jsonData.data.(354)a24xxx是完全不符合JavaScript语法的写法,自然无法运行。jsonData.data.po是在访问对象中名为po的属性,而非变量po存储的键名,必须用方括号包裹变量才能读取对应的值。
内容的提问来源于stack exchange,提问作者Cezary Kubiski JW-A
相关产品推荐
相关产品推荐

