encodeKey static method
dynamic
encodeKey(
- dynamic json,
- 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;
}
}