首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用x-websocket的气氛

使用x-websocket的气氛
EN

Stack Overflow用户
提问于 2014-08-08 13:28:51
回答 1查看 151关注 0票数 0

我正在尝试从使用大气(https://github.com/Atmosphere/atmosphere-javascript)的外部(因此我不知道如何配置) websocket获得一些数据。我正在使用x websocket聚合物元素来管理我的请求(https://github.com/elierotenberg/x-websocket)。

这是我根据我的请求得到的数据:

{date.day.name=周五;date.day = 8;date.month.name =8月;date.month = 8;date.year =2014年;date.dow = 6;time.hour = 15;time.minute = 18;time.second = 48;时间= 151848;日期= 20140808;发送者=光;object.type = EnvObject.ElectricDevice.Light;object.name =厨房之光;object.protocol =未知;object.address =未知;object.uuid =2196 e70-7e00-4a0d-a13f-a 4728240d9d0;object.currentRepresentation = 0;object.behavior.brightness = 0;object.behavior.powered等于false}

有人知道如何在js中反序列化它或如何将它解析为JSON对象吗?

否则,你对大气有什么问题有任何暗示吗?(我可以要求API所有者以不同的方式配置它)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-08 14:57:38

我仍然不知道响应类型,但最终我解析了内容,下面是代码:

代码语言:javascript
运行
复制
<script>
 Polymer({
  onMessage: function(event){
    var data = event.detail.data;
    data = data.split("|").pop();
    data = this.parse(data);
    this.fire("message", { data: data });
  },
  parse: function(input){
    var statements = input.substring(2, input.length -2).split("; ");
    var output = {};

    for (var i = 0; i < statements.length; i++) {
      var statement = statements[i].split(" EQUALS ");
      var leftSide = statement[0].split(".");
      var rightSide = statement[1];
      this._assign(output, leftSide, rightSide);
    }

    var data = JSON.stringify(output);
    return JSON.parse(data);
  },
  _assign: function(obj, keyPath, value){
     var lastKeyIndex = keyPath.length-1;
     for (var i = 0; i < lastKeyIndex; ++i) {
       key = keyPath[i];
       if (!(key in obj)){
         obj[key] = {};
       }
       obj = obj[key];
     }
     obj[keyPath[lastKeyIndex]] = value;
  }
});

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25204668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档