encodeMapJson static method
esta fumcion recorre en profundidad un objeto y lo va codificando y el criterio de codificacion lo hace aplicando la inversa a la lista es decir codifica del ultimo al primero ya que la idea es utilizar la misma lista que se obtuvo en la funcion decodeMapJson
Implementation
static Map<String, dynamic> encodeMapJson(
dynamic decodedJson, List<String> decodedKeys) {
try {
///Este encode ejecuto para asegurarme que viene un json valido
///si no es un json valido se lanza una excepcion
json.encode(decodedJson);
for (final key in decodedKeys.reversed) {
///Aca elimino los key que solo tiene el esquema no van en la data
///ejemplo `properties`
final keysToEncode = key.split('.');
keysToEncode.removeWhere(
(element) => element == CamposPropiedadEsquema.properties.name);
decodedJson = encodeKey(decodedJson, keysToEncode);
}
try {
final Map<String, dynamic> mapa = {...decodedJson};
return mapa;
} catch (error) {
throw Exception(
'encodeMapJson(ERROR: $error) - NO es un MAPA JSON: $decodedJson');
}
} catch (error) {
throw Exception(
'encodeMapJson(ERROR: $error) JSON no es un tipo valido parametros:(decodedJson:> $decodedJson, decodedKeys:> $decodedKeys)');
}
}