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

Offical Documentation

Official Docs: