encodeKey static method

dynamic encodeKey(
  1. dynamic json,
  2. List<String> keysToEncode
)

Implementation

static dynamic encodeKey(dynamic json, List<String> keysToEncode) {
  if (keysToEncode.isEmpty) {
    return json;
  }

  String keyToEncode = keysToEncode.first;
  List<String> remainingKeys = keysToEncode.sublist(1);

  if (json is Map) {
    final newJson = Map.from(json);
    for (final key in json.keys) {
      if (key == keyToEncode) {
        if (remainingKeys.isEmpty) {
          ///Se hace esta comprobacion para no realizar una doble codificacion de la informacion
          ///ya que genera un error al querer actualizar la info. Esto se da cuando se graba mal la informacion
          ///en un campo que almacena un jsonString y no se puede hacer el decode en el proceso anterior, en este punto
          ///vuelve a codificar la data ejemplo: {"clave": "null"}
          if (json[key] is! String) {
            newJson[key] = jsonEncode(json[key]);
          } else {
            newJson[key] = json[key];
          }
        } else {
          newJson[key] = encodeKey(json[key], remainingKeys);
        }
      } else {
        newJson[key] = encodeKey(json[key], keysToEncode);
      }
    }
    return newJson;
  } else if (json is List) {
    return json.map((item) => encodeKey(item, keysToEncode)).toList();
  } else {
    return json;
  }
}