我在lambda调用中获得了一个aws事件参数。
let event = { pathParameters: '{"foo":"35314"}' }
当我尝试验证condition中的参数时,它找不到foo
上的pathParameters
键
在这里检查病情
if (event.pathParameters && event.pathParameters.foo) {
//do something
} else {
console.log('fail');
}
它以else
状态运行。我尝试了JSON.parse(JSON.strinify(event))
。它没有帮助。如果我做JSON.parse(event.pathParameters)
,我确实得到了对象。
解决根级对象问题的任何方法。
答案 0 :(得分:3)
否,您不能解析 event
才能访问'{"foo": "35314}'"
,您需要解析event.pathParameters
值才能获得实际的{ {1}}及其值foo
35314
答案 1 :(得分:1)
这是因为您获取的数据具有pathParameters
中字符串化的JSON,因此您必须使用该键进行解析,例如
JSON.parse(event.pathParameters).foo
答案 2 :(得分:0)
let event = { pathParameters: '{"foo":"35314"}' } // foo is a string
if (event.pathParameters) {
try {
const { foo } = JSON.parse(event.pathParameters);
// use foo
} catch (jsonError) {
console.log('There was some json parse error', jsonError);
}
} else {
console.log('fail');
}
您需要解析来自event.pathParameters
的数据
答案 3 :(得分:0)
function doSomething(event) {
let pathParametersObj = JSON.parse(event.pathParameters);
if (pathParametersObj && pathParametersObj.foo) {
//do something
console.log('pass');
} else {
console.log('fail');
}
}
let event1 = {
pathParameters: '{"foo":"35314"}'
}
let event2 = {
pathParameters: null
}
doSomething(event1);
doSomething(event2);