EntregarDeclaracaoResponse.fromJson constructor

EntregarDeclaracaoResponse.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory EntregarDeclaracaoResponse.fromJson(Map<String, dynamic> json) {
  DeclaracaoTransmitida? dadosParsed;
  try {
    final dadosStr = json['dados']?.toString() ?? '';
    if (dadosStr.isNotEmpty) {
      final dadosMap = jsonDecode(dadosStr);

      // Se for uma lista, retorna a lista
      if (dadosMap is Map &&
          dadosMap.containsKey('dados') &&
          dadosMap['dados'] is List) {
        final lista = dadosMap['dados'];
        dadosParsed = DeclaracaoTransmitida.fromJson(
          lista as Map<String, dynamic>,
        );
      } else if (dadosMap is Map) {
        // Se for um objeto único, retorna como lista com um item
        dadosParsed = DeclaracaoTransmitida.fromJson(
          dadosMap as Map<String, dynamic>,
        );
      }
    }
  } catch (e) {
    // Se não conseguir fazer parse, mantém dados como null
  }

  return EntregarDeclaracaoResponse(
    status: int.parse(json['status'].toString()),
    mensagens: (json['mensagens'] as List)
        .map((m) => Mensagem.fromJson(m as Map<String, dynamic>))
        .toList(),
    dados: dadosParsed,
  );
}