Skip to content Skip to sidebar Skip to footer

Json Data Fuzzy Merge

I have a JSON data like this { 'array': { 'InvestmentsDeposits': { 'NAME': 'Investments & Deposits', 'PARENT': [ {

Solution 1:

Use Object.keys() to find an object's keys and figure out what data to move over. You can compare the first key with the others to find matches, then remove the keys you just looked at until all of them are gone. Here's an example with a similar object.

var dat = {
        "InvestmentsDeposits": {
            "NAME": "Investments & Deposits",
            "CONTENT_ID": "Promotions",
            "DISPLAY_ORDER": 3,
            "PATH": "/Promotions"
        }, "InvestmentsDeposits$$$d": {
            "NAME": "Deposits",
            "CONTENT_ID": "NewPromotion",
             "text" : "newtext"
        },
        "NotLikeTheOthers": {
            "Um": "Yeah."
        }
    
    };
    var result = {}; // This will be the merged objectvar keys = Object.keys(dat); // Contains keyswhile(keys.length) {
        var i=1;
        for(; i<keys.length; i++) { // Find matchesif(keys[0] == keys[i] + '$$$d') { // Match type 1
                result[keys[i]] = dat[keys[i]]; // Copy origfor(var j in dat[keys[0]]) { // Replace values
                    result[keys[i]][j] = dat[keys[0]][j];
                }
                keys.splice(i,1);
                keys.shift();
                i = 0;
                break;
            } elseif(keys[i] == keys[0] + '$$$d') { // Reverse matched
                result[keys[0]] = dat[keys[0]];
                for(var j in dat[keys[i]]) {
                    result[keys[0]][j] = dat[keys[i]][j];
                }
                keys.splice(i,1);
                keys.shift();
                i = 0;
                break;
            }
        }
        if(i > 0) { // Didn't find a match
            result[keys[0]] = dat[keys[0]];
            keys.shift();
        }
    }
    alert(JSON.stringify(result));

Note that Object.keys()requires IE9+.

Post a Comment for "Json Data Fuzzy Merge"