javascript - 用于检索对象上的某些元素的 Javascript 点表示法
问题描述
在 IBM API Connect 的 GatewayScript 上,我正在尝试编写一个 JS 脚本来从以下请求负载中获取对象值:
{"number": "1234",
"type": "type1",
"someKey": "SomeValue"}
我正在使用以下代码,但得到一个NULL
:
var apim = require('apim');
var RequestBody = apim.getvariable('request.body');
var result = RequestBody.number;
apim.setvariable('message.body', result);
在 APIC 的网关脚本上,它本质上是在使用点表示法来获取该键/值 ( "someVal": "1234"
),但结果是NULL
……当我尝试获取“ var result
”时,我确实得到了所有有效负载……我就是无法得到 1键为数字 = 1234 的对象的值。
有人有想法么?
Ps 我真正要问的是,如果我想1234
从下面的请求中获取 " " 的输出值:
var RequestBody = {"someVal": "1234"}
我想我会只是一个点符号RequestBody.someVal
,是吗?
谢谢你。
解决方案
代码看起来不错,但您可能有两个问题......
首先检查请求正文是否正确发布,以及 JSON 是否符合您的预期。
其次检查请求正文实际上是 JSON 而不是字符串。您可以通过以下方式做到这一点:
const requestBody = apim.getvariable('request.body');
const jsonBody = typeof requestBody === 'string' ? JSON.parse(requestBody) : requestBody;
const result = jsonBody.number;
推荐阅读
- python - 如何在 Python3 中使用自定义排序编写自定义比较器以在 sorted() 函数中使用它
- neo4j - Neo4j 在使用 apoc.merge.relationship() 时向关系添加属性
- hyperledger-fabric - 领导者没有选择 hyperLedger 织物筏订购服务
- jenkins - 在 Jenkinsfile 中定义特定于分支的环境变量
- java - IntelliJ 配置自动运行/调试配置以使用 TestNG 而不是 Gradle 进行测试
- c# - 创建将指向数组的下一个空位置的新字段
- git - 在不丢失旧文件的情况下重组现有的 bitbucket 存储库
- php - PHP/MySQL:更新 int where id = column?
- laravel - 如何从 javascript 访问 mix() 路径
- typescript - TypeScript:将html图像作为参数而不是任何参数传递时正确的类型