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 object
    var keys = Object.keys(dat); // Contains keys
    while(keys.length) {
        var i=1;
        for(; i<keys.length; i++) { // Find matches
            if(keys[0] == keys[i] + '$$$d') { // Match type 1
                result[keys[i]] = dat[keys[i]]; // Copy orig
                for(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;
            } else if(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"