如何使用 AWS SDK 解析来自 getThingShadow 的 json 结果

How to parse the json result from getThingShadow, using AWS SDK

我在使用 AWS SDK 和 nodejs 解析 AWS getThingShadow 的结果时遇到了一些问题。它 returns 数据,它看起来类似于 Json 除了它在开头有文本有效负载,我想这就是我可以正确解析它的原因。另一方面,我怀疑作为 AWS SDK 的一部分必须存在一些可以为我做这件事的功能吗?不幸的是,我还没有找到任何相关信息。您认为最简单的方法是什么?

   var iotdata = new AWS.IotData({endpoint: 'myEndPoint'});
   iotdata.getThingShadow(params, function (err, data) {
     if (err) console.log(err, err.stack); // an error occurred
     else
        {
            console.log(data);           // successful response

数据如下所示: 有效载荷{“状态”:{“期望”:{“GPIO1”:“0”,“GPIO5”:“0”,“GPIO6”:“0”,“GPIO13”:“0”},“报告”: {“GPIO1”:“8”,“GPIO5”:“0”...

当然,我可以尝试“手动”删除第一个文本(有效负载),然后正常解析 json,但这听起来不是正确的方法。

谢谢, 马库斯

响应看起来有点奇怪,因为我认为它实际上是一个对象。 payload 是键,value 是您需要解析的字符串。

我认为如果这是真的并且有效载荷本身就是一个对象,您也许可以做这样的事情。

const test = {payload: '{"state":{"desired":{"GPIO1":"0","GPIO5":"0","GPIO6":"0","GPIO13":"0"},"reported": {"GPIO1":"8","GPIO5":"0"}}}'}

console.log('typeof test', typeof test) // assuming this returns object

JSON.parse(test.payload)

{
  state: {
    desired: { GPIO1: '0', GPIO5: '0', GPIO6: '0', GPIO13: '0' },
    reported: { GPIO1: '8', GPIO5: '0' }
  }
}