function (input, prefix) {
    _.forOwn(input, function (value, key) {
      if ((/[^\w-]/).test(key)) {
        console.warn(key + ': the key format is not valid');
      }
      if (_.isPlainObject(value)) {
        return recursion(value, prefix ? [prefix, key].join('_') : key);
      }
      result[(prefix ? [null, prefix, key] : [null, key]).join('_')] =
        _.isFinite(value) ? value : _.truncate(_.toString(value), {length: 32765}); // 32765 + 1
    });
  }
function (input, prefix) {
    _.forOwn(input, function (value, key) {
      if ((/[^\w-]/).test(key)) {
        console.warn(key + ': the key format is not valid');
      }
      if (_.isPlainObject(value)) {
        return recursion(value, prefix ? [prefix, key].join('_') : key);
      }
      result[(prefix ? [null, prefix, key] : [null, key]).join('_')] =
        _.isFinite(value) ? value : _.truncate(_.toString(value), {length: 32765}); 
    });
  }
function ( input , prefix ) { _ . forOwn ( input , function ( value , key ) { if ( ( / [^\w-] / ) . test ( key ) ) { console . warn ( key + ': the key format is not valid' ) ; } if ( _ . isPlainObject ( value ) ) { return recursion ( value , prefix ? [ prefix , key ] . join ( '_' ) : key ) ; } result [ ( prefix ? [ null , prefix , key ] : [ null , key ] ) . join ( '_' ) ] = _ . isFinite ( value ) ? value : _ . truncate ( _ . toString ( value ) , { length : 32765 } ) ; // 32765 + 1 } ) ; }
recursion function for key-value aggregation 32766 bytes is the maximum length for a field
recursion function for key - value aggregation 32766 bytes is the maximum length for a field