【问题标题】:nodejs merge arraynodejs合并数组
【发布时间】:2012-09-01 15:03:40
【问题描述】:

我正在做一些 nodejs 摆弄来自 wordpress 的博客帖子和这些帖子的地理标记。我已将 geolite 集成到 nodejs 中,并从 wordpress 中获取客户端 ID。这是我的 nodejs 代码现在的样子。

native.on('data',
  function(data)
  {
    //console.log(data)
    listener.sockets.emit('notification', data);
    jsonstring = JSON.parse(data)
    var ip = jsonstring.clientip
    var geo = geoip.lookup(ip);
    console.log(ip);
    console.log(geo);
    listener.sockets.emit('geodata', geo);
  }
);

如您所见,lat / long 与 json 编码数据分开发送到套接字。

我想将 lat / long 合并到“数据”中并作为 1 个对象发送。我不知道该怎么做。我希望有人可以帮助我解决这个问题。

【问题讨论】:

    标签: json node.js geoip


    【解决方案1】:

    一个或两个 expando/ad-hoc 属性就足够了:

    listener.sockets.emit('notification', data);
    jsonstring = JSON.parse(data)
    var ip = jsonstring.clientip
    var geo = geoip.lookup(ip);
    jsonstring.geo = geo;
    // or
    jsonstring.lat = geo.lat;
    jsonstring.lng = geo.lng;
    

    【讨论】:

    • 这似乎可行,但我需要将“jsonstring”再次编码为 json,然后再将其发送到套接字。将数据添加到数组后如何进行json编码?
    • 我最终得到了这个可行的解决方案。感谢您的帮助 :-) native.on('data', function(data) { jsonstring = JSON.parse(data) var ip = jsonstring .clientip var geo = geoip.lookup(ip); jsonstring.lat = geo.ll[0]; jsonstring.lng = geo.ll[1]; jsondata = JSON.stringify(jsonstring); listener.sockets.emit('通知',jsondata);console.log(jsondata);}); native.on('end', function() { } ); }
    【解决方案2】:

    在发出之前将geo 信息添加为已解析数据对象的另一个属性:

    native.on('data',
      function(data)
      {
        var obj = JSON.parse(data)
        obj.geo = geoip.lookup(obj.ip);
        listener.sockets.emit('notification', JSON.stringify(obj));
      }
    );
    

    【讨论】:

      【解决方案3】:

      你也可以使用

          listener.sockets.emit('notification', data);
          jsonstring = JSON.parse(data)
          var ip = jsonstring.clientip
          var geo = geoip.lookup(ip);
          jsonstring['geo'] = geo;
      

      在jsonstring中追加数据

      当我们有动态键值时,[ ] 会更有帮助

      【讨论】:

        猜你喜欢
        • 2015-07-26
        • 2017-11-28
        • 2016-10-07
        • 2021-07-05
        • 2021-08-27
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 2021-12-30
        相关资源
        最近更新 更多