Name
sn_em_connector.FlattenPayload
Description
Flatten Event Payload.
Script
var FlattenPayload = Class.create();
FlattenPayload.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
/**
passedKey: passed key of the payload
passedValue: passed value of the payload
prefix: the prefix value to be added to the key while flattening
flatPayload: flatpayload object to which payload properties has to be added
firstLevelRequired: true if first level keys also has to be added to flattened structure
*/
flatten: function(passedKey, passedValue, prefix, flatPayload, firstLevelRequired) {
var passedKeyEmpty = (passedKey == "");
var separator = ".";
if (passedValue instanceof Array) {
for (var index = 0; index < passedValue.length; index++) {
this.flatten("", passedValue[index], passedKeyEmpty ? (prefix + separator + index) : (prefix + separator + passedKey + separator + index), flatPayload, true);
}
} else if (passedValue instanceof Object) {
for (var objkey in passedValue) {
this.flatten(objkey, passedValue[objkey], passedKeyEmpty ? (prefix) : (prefix + separator + passedKey), flatPayload, true);
}
} else {
if (firstLevelRequired == true) {
flatPayload[passedKeyEmpty ? (prefix) : (prefix + separator + passedKey)] = passedValue;
}
}
},
flattenPayload: function(payload, firstLevelRequired) {
var payloadJson;
try {
if (payload instanceof Object) {
payloadJson = payload;
} else {
payloadJson = JSON.parse(payload);
}
//gs.info("=== FlattenPayload:getFlattenPayload() Received payload ===" + payload);
var prefix = "flattened";
var flatPayload = {};
for (var key in payloadJson) {
this.flatten(key, payloadJson[key], prefix, flatPayload, firstLevelRequired);
}
} catch (err) {
gs.debug("=== FlattenPayload:getFlattenPayload() exception occurred ===" + err);
}
return flatPayload;
},
/**
this method will flatten the data without the first level key value pairs that are not array/objects.
{"key":"value"} -- here key is NOT flattened as it NOT nested
payload : payload that has to be flattened
*/
/**
Input
{
"s": "s1",
"a": [
"a1",
"a2",
"a3"
],
"o": {
"k1": "v1",
"k2": [
"v2",
"v21",
"v22"
],
"k3": {
"k4": "v4",
"k5": [
"v5",
"v51",
"v52"
],
"k6": {
"k7": "v7"
}
}
}
}
output
======
{
"flattened.a.0": "a1",
"flattened.a.1": "a2",
"flattened.a.2": "a3",
"flattened.o.k1": "v1",
"flattened.o.k2.0": "v2",
"flattened.o.k2.1": "v21",
"flattened.o.k2.2": "v22",
"flattened.o.k3.k4": "v4",
"flattened.o.k3.k5.0": "v5",
"flattened.o.k3.k5.1": "v51",
"flattened.o.k3.k5.2": "v52",
"flattened.o.k3.k6.k7": "v7"
}
*/
getFlattenPayload: function(payload) {
return this.flattenPayload(payload, false);
},
/**
this method will flatten the data with the first level key value pairs also.
{"key":"value"} -- here key is also flattened
payload : payload that has to be flattened
*/
/**
Input
=====
{
"s": "s1",
"a": [
"a1",
"a2",
"a3"
],
"o": {
"k1": "v1",
"k2": [
"v2",
"v21",
"v22"
],
"k3": {
"k4": "v4",
"k5": [
"v5",
"v51",
"v52"
],
"k6": {
"k7": "v7"
}
}
}
}
output
======
{
"flattened.s": "s1",
"flattened.a.0": "a1",
"flattened.a.1": "a2",
"flattened.a.2": "a3",
"flattened.o.k1": "v1",
"flattened.o.k2.0": "v2",
"flattened.o.k2.1": "v21",
"flattened.o.k2.2": "v22",
"flattened.o.k3.k4": "v4",
"flattened.o.k3.k5.0": "v5",
"flattened.o.k3.k5.1": "v51",
"flattened.o.k3.k5.2": "v52",
"flattened.o.k3.k6.k7": "v7"
}
*/
getFlattenPayloadWithFirstLevel: function(payload) {
return this.flattenPayload(payload, true);
},
type: 'FlattenPayload'
});
Sys ID
615169985bd5a010ea1d1b800481c7e3