以编程方式合并两个JSON对象

dfddblmv  于 2022-12-15  发布在  其他
关注(0)|答案(8)|浏览(114)

这里有两个JSON对象,通过API生成。这些对象的URL可以在下面找到。
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=hello%20world&rsz=largehttp://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=hello%20world&rsz=large&start=8
正如您所看到的,第一个URL返回前8个结果,而第二个URL返回接下来的8个结果。我不想分别检查这些结果,而是想 * 以编程方式 * 将它们合并到一个JSON对象中,并将它们作为前16个结果传递。
我已经用几个极其简单的JSON对象尝试过了,但是Google返回的结果仍然有点超出我的理解范围,所以我希望能得到一些帮助来完成这件事。
据我所知,将两个对象合并成一个对象并不违反Google的服务条款,只是它们总是作为两个结果(他们会这样做)。一些朋友向我指出了能够做这些事情的自动化工具的方向,但我还没有找到这样的工具。
我目前在ASP.NET工作,所以C#或VB .NET代码是伟大的,但我有点语言独立,所以任何语言的任何帮助将非常感谢。
有人能提供任何帮助和/或建议吗?

**EDIT:**这些结果最终将被保存到数据库中,因此任何服务器端方法都是非常棒的,即使这意味着将它们直接放入表中以便以后处理。

5q4ezhmt

5q4ezhmt1#

function MergeJSON (o, ob) {
      for (var z in ob) {
           o[z] = ob[z];
      }
      return o;
}

这看起来很像Elliot的代码,但在某些情况下更安全一些。它没有向对象添加函数,这在Extjs或jQuery这样的框架中使用时可能会导致一些语法问题。我遇到的问题是,当在事件侦听器中使用时,它会给我带来语法问题。但要归功于Elliot,他完成了这项工作。
按如下所示使用此选项:

a = {a : 1}
b = {b : 2}
c = {c : 3}

x = MergeJSON ( a, b);
x = MergeJSON ( x, c);

result : x  == {a : 1, b : 2, c : 3}

谢谢你艾略特

iyr7buue

iyr7buue2#

Object.prototype.merge = (function (ob) {
    var o = this;
    var i = 0;
    for (var z in ob) {
        if (ob.hasOwnProperty(z)) {
            o[z] = ob[z];
        }
    }
    return o;
})

var a = {a:1}
var b = {b:2}

var c = a.merge(b); // === {a:1,b:2}
vi4fp9gy

vi4fp9gy3#

我没有将两个结果合并在一起,而是决定解析它们,然后将它们链接在一起。最后,当它们可以很容易地在数据库中连接时,真的没有必要将它们合并在一起。

kxxlusnw

kxxlusnw4#

如果您正在使用客户端解决方案(实际上是JavaScript),那么尝试一下我编写的“unite”函数如何?http://code.google.com/p/av-jslib/source/browse/js/aV.ext.object.js#36

ycl3bljg

ycl3bljg5#

使用Jquery您可以做到这一点!

a = $.extend({a:1}, {b:2});

result: Object { a=1,  b=2}

http://api.jquery.com/jQuery.extend/

bvjxkvbb

bvjxkvbb6#

此外,如果您真的想在服务器端进行结果操作,this article似乎给予了一个相当合理的过程演练。

wmtdaxz3

wmtdaxz37#

我不知道如何将这些东西完全合并,因为除了结果本身之外,每个结果中还有很多额外的数据,但是如果您只想要一个包含所有16个结果的JavaScript数组,这应该可以工作...

var responses = [GetJsonObjectFromThatUriUsingJqueryOrSomething(),
                 GetJsonObjectFromThatOtherUriUsingJqueryOrSomething()];

// Probably want to check for success
// and ensure that responses[i].responseData.results is valid.

var results = [];
for (var i = 0; i < responses.length; ++i)
{
    results = results.concat(responses[i].responseData.results);
}
pftdvrlh

pftdvrlh8#

为了使它更简洁,可以将merge函数添加到JSON对象中,这是Johan货车de Merwe基于Elliot的答案提出的解决方案,添加到实际的JSON对象中。

// Extend JSON object
JSON.merge = function (o,ob) {

  for (var z in ob) {
    o[z] = ob[z];
  }

  return o;
}

json3 = JSON.merge(json1,json2);

相关问题