lib/json-parser.js
function _canFlattenKey(key, requestContext) {
  //debug('_canFlattenKey?', key, requestContext);

  // assume that '*Array' and '*List' elements are arrays.
  if (/Array$/.test(key) || /List$/.test(key)) return false;

  // per-endpoint blacklist of known array keys.
  if (requestContext != null && requestContext.serviceName && requestContext.opType &&
      knownArrayKeysByApiEndpoint[requestContext.serviceName] != null &&
      knownArrayKeysByApiEndpoint[requestContext.serviceName][requestContext.opType] != null &&
      _.contains(knownArrayKeysByApiEndpoint[requestContext.serviceName][requestContext.opType], key)) {
    return false;
  }

  // otherwise assume it can be flattened if there's a single value.
  return true;
}
function _canFlattenKey(key, requestContext) {
  //debug('_canFlattenKey?', key, requestContext);

  // assume that '*Array' and '*List' elements are arrays.
  if (/Array$/.test(key) || /List$/.test(key)) return false;

  // per-endpoint blacklist of known array keys.
  if (requestContext != null && requestContext.serviceName && requestContext.opType &&
      knownArrayKeysByApiEndpoint[requestContext.serviceName] != null &&
      knownArrayKeysByApiEndpoint[requestContext.serviceName][requestContext.opType] != null &&
      _.contains(knownArrayKeysByApiEndpoint[requestContext.serviceName][requestContext.opType], key)) {
    return false;
  }

  // otherwise assume it can be flattened if there's a single value.
  return true;
}
/*
helper to filter the keys that get flattened.