通过id将两个json对象合并到一个对象中

时间:2013-11-17 00:11:07

标签: jquery ajax json

我有两个像这样的json对象:

Object 1:

{
   "jcat":[
      {
         "TITLE":"SEO",
         "ID":"27",
      },
      {
         "TITLE":"Functions and Events",
         "ID":"2"
      },
]
}

Object 2:

{
  "job":[
  {
     "PCATID":"27",
     "CC":"AHE",
     "JNUM":"01488"
  },
  {
     "PCATID":"27",
     "CC":"EBS",
     "JNUM":"01489"
  },
]}

他们有共同的ID(ID和PCATID),但它们的名称不同。

如何合并它们以使最终对象看起来像:

对象3:

{
   "jcat":[
      {
         "TITLE":"SEO",
         "ID":"27",
         "CC":"AHE",
         "JNUM":"01488"
      },
      {
         "TITLE":"SEO",
         "ID":"27",
         "CC":"EBS",
         "JNUM":"01489"
      },

    ]
}

1 个答案:

答案 0 :(得分:0)

没有真正简单的方法可以做到这一点。但以下内容将起作用:

var obj1 = {
   "jcat":[
      {
         "TITLE":"SEO",
         "ID":"27",
      },
      {
         "TITLE":"Functions and Events",
         "ID":"2"
      }]
};

var obj2 = 
{
  "job":[
  {
     "PCATID":"27",
     "CC":"AHE",
     "JNUM":"01488"
  },
  {
     "PCATID":"27",
     "CC":"EBS",
     "JNUM":"01489"
  }
]};

var newObj = {jcat:[]};
newObj.jcat[0] = $.extend(true, {}, obj1.jcat[0], $.map([obj2.job[0]],function(e){
    return {CC:e.CC, JNUM:e.JNUM};
})[0]);
newObj.jcat[1] = $.extend(true, {}, obj1.jcat[0], $.map([obj2.job[1]], function(e){
    return {CC:e.CC, JNUM:e.JNUM};
})[0]);

JS FIDDLE: http://jsfiddle.net/XmsX4/1/