encodeMapJson static method

Map<String, dynamic> encodeMapJson(
  1. dynamic decodedJson,
  2. List<String> decodedKeys
)

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)');
  }
}