【问题标题】:How to parse the json result from getThingShadow, using AWS SDK如何使用 AWS SDK 解析来自 getThingShadow 的 json 结果
【发布时间】:2020-12-08 11:43:53
【问题描述】:

我在使用 AWS SDK 和 nodejs 解析来自 AWS getThingShadow 的结果时遇到了一些问题。它返回数据,它看起来类似于 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

数据如下所示: 有效载荷 {"state":{"desired":{"GPIO1":"0","GPIO5":"0","GPIO6":"0","GPIO13":"0"},"reported": {"GPIO1":"8","GPIO5":"0"...

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

谢谢, 马库斯

【问题讨论】:

    标签: node.js amazon-web-services aws-sdk aws-iot


    【解决方案1】:

    响应看起来有点奇怪,因为我认为它实际上是一个对象。 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' }
      }
    }
    

    【讨论】:

    • 谢谢,成功了,我现在看到了一些完美的 json。非常感谢您的帮助!
    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多