2013-11-17 4 views
1

У меня есть два 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 и PCATID), но они называются разные.

Как я могу объединить их так, чтобы конечные объекты выглядит следующим образом:

Объект 3:

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

    ] 
} 

ответ

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 скрипку:http://jsfiddle.net/XmsX4/1/

+0

благодаря Кевином получил концепцию – Bravo11

Смежные вопросы