nodejs合并数组

时间:2012-09-01 15:03:40

标签: json node.js geoip

我在做一些节点,摆弄着来自wordpress的博客帖子和theese帖子的地理标记。我已将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合并为“data”并发送为1个对象。我无法弄清楚如何做到这一点。我希望有人可以帮助我。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您也可以使用

owner_jited

将数据附加到jsonstring

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