【问题标题】:How can i save the JSON and access the objects如何保存 JSON 并访问对象
【发布时间】:2018-12-02 13:31:20
【问题描述】:

我目前正在使用 MQTT 发布/订阅,并且每当主题发布时都会收到一条消息,并且我收到的消息可能会因主题而异。

收到的 JSON 分配给消息

client.on('message', function (topic, message)
 { cmd: 'set', reqid: 'string', objects: [ { type: 'devices', data: ["tring"], execution: {"command": "OnOff", "params": { "on": true }} } ] }

我想将 JSON 保存在一个变量中并从中访问对象。

JSON 是字符串,当我尝试访问它的对象时,例如 (message.cmd),它会显示“未定义”

【问题讨论】:

  • 你需要使用 JSON.parse()
  • 如果您使用 json.parser.online.fr 中的 json 字符串在线检查 @anush。你知道这是你用括号的功能问题
  • 更新你的函数:-client.on('message', function (topic, message) { {cmd: 'set', reqid: 'string', objects: [ { type: 'devices' , 数据: ["tring"], 执行: {"command": "OnOff", "params": { "on": true }} } ] } }

标签: javascript node.js mqtt


【解决方案1】:

要将 JSON 字符串转换为对象,请使用

var recObject = JSON.parse(stringJson);

要将其转换回字符串,请使用

var jsonStr = JSON.stringify(recObject);

【讨论】:

  • 可以使用recObject.cmd获取cmd
【解决方案2】:

JSON.parse()的帮助下:

var data = JSON.parse(stringData);
console.log(data);

【讨论】:

  • 嗨 ....我无法访问对象 console.log(data) 给出“{ cmd: 'set', reqid: 'string', objects: [ { type: 'devices ', data: ["tring"], execution: {"command": "OnOff", "params": { "on": true }} } ] }" 但 "console.log(data.cmd)" 未定义
  • 请检查数据["cmd"]
【解决方案3】:

试试这个方法

var data = JSON.parse(strData);  // strData is what you got in response. 
console.log(data);  

更新

我检查了您的 JSON,发现问题在于 JSON 中的引号。如果您可以更新将 res 设置为这样的响应。

{
  "cmd":"set",
  "reqid":"string",
  "objects":[
    {
      "type":"devices",
      "data":["string"],
    "execution":{
      "command":"OnOff",
      "params":{
      "on":true
    }
   }
  }
 ]
}

那么你也不需要parse 数据。您可以直接访问它自己的对象。

console.log("Parse data is :::",txt.cmd);

【讨论】:

  • 嗨@Sachin Shah ..感谢您的快速重播,是的,我明白了,但问题是我无法访问对象...当我尝试“console.log(data.cmd) ” 它给出“未定义”,这是我得到的数据“{ cmd: 'set', reqid: 'string', objects: [ { type: 'devices', data: ["tring"], execution: {"command" : "OnOff", "params": { "on": true }} } ] }"
猜你喜欢
  • 1970-01-01
  • 2012-06-06
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2011-01-12
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多