Json 节点合并数组

Json 节点合并数组,json,node.js,geoip,Json,Node.js,Geoip,我在做一些nodej,摆弄wordpress上的博客文章和这些文章的地理标签。我已经将geolite集成到nodejs中,并从wordpress中获得了客户端id。下面是我的nodejs代码目前的样子 native.on('data', function(data) { //console.log(data) listener.sockets.emit('notification', data); jsonstring = JSON.parse(data)

我在做一些nodej,摆弄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个对象发送。我想不出怎么做。我希望有人能帮我解决这个问题。

一两个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;

geo
信息添加为已解析数据对象的另一个属性,然后再将其发送:

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

    listener.sockets.emit('notification', data);
    jsonstring = JSON.parse(data)
    var ip = jsonstring.clientip
    var geo = geoip.lookup(ip);
    jsonstring['geo'] = geo;
在jsonstring中追加数据


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

这似乎可行,但我需要在将“jsonstring”发送到套接字之前再次将其编码为json。在将数据添加到数组后,如何进行json编码?我最终得到了这个有效的解决方案。。帮助的thx:-)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.stringy(jsonstring);listener.sockets.emit('notification',jsondata);console.log(jsondata);});native.on('end',function(){});}