解析JSON对象,并将值作为单引号字符串传递

时间:2018-07-05 19:39:08

标签: javascript json node.js object

我在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),我确实得到了对象。 解决根级对象问题的任何方法。

4 个答案:

答案 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);