convertKeysToSnakeCase function

dynamic convertKeysToSnakeCase(
  1. dynamic obj
)

Implementation

dynamic convertKeysToSnakeCase(dynamic obj) {
  if (obj is! Map<String, dynamic>) {
    return obj; // Return as is if obj is not a map
  }

  if (obj is List) {
    // If obj is a list, recursively convert keys for each item in the list
    return (obj as List<Map<String, dynamic>>)
        .map((item) => convertKeysToSnakeCase(item))
        .toList();
  }

  Map<String, dynamic> snakeCaseObj = {};
  obj.forEach((key, value) {
    // Convert key to snake case
    String snakeCaseKey = key.replaceAllMapped(
        RegExp(r'([A-Z])'), (match) => '_${match.group(0)!.toLowerCase()}');
    // Recursively convert keys for nested maps
    snakeCaseObj[snakeCaseKey] = convertKeysToSnakeCase(value);
  });
  return snakeCaseObj;
}