Separe o transporte do formato de dados
Base64, ASCII85, Base91 e escapes hexadecimais apenas transportam bytes como texto; Avro, CBOR e Protobuf definem a estrutura da carga.
Elysia Tools
Navegação
Workflow Playbook
Converta dados estruturados entre formatos de serializacao binaria, codificacoes de transporte em texto e representacoes escapadas com verificacao controlada de ida e volta.
Temas
O erro mais comum em mensagens binarias e confundir a camada de texto com o formato dos dados. Registre primeiro a origem, os limites da mensagem e o consumidor esperado: valores estruturados sao serializados em bytes, e esses bytes podem ser representados em Base64, ASCII85, Base91 ou texto hexadecimal escapado. Guarde as tres camadas separadamente e nao altere texto visivel como se fosse JSON ou UTF-8 enquanto o formato interno nao estiver confirmado.
Prepare uma amostra de referencia repetivel com texto comum e nao ASCII, numeros decimais, nulos, bytes zero, objetos aninhados e arrays. Anote o tamanho original e alguns trechos hexadecimais de controle para diferenciar depois falhas de serializacao de falhas de transporte.
Quando o protocolo informar a representacao externa, use o conversor correspondente para obter os bytes. Se a origem for incerta, preserve as evidencias e teste a integridade das hipoteses; uma sequencia Base64 decodificada com sucesso pode conter Protobuf, CBOR ou um quadro proprio da aplicacao, e nao necessariamente JSON.
Escolha Avro, BSON, CBOR, Ion, MessagePack, Protobuf, Smile ou UBJSON somente depois de examinar bytes, documentacao do emissor, tipo de conteudo, schema ou codigo do receptor. Em formatos com schema, versao, numeros de campo e valores padrao pertencem ao contrato e nao devem desaparecer na conversao.
Converta a amostra para o formato de destino e restaure-a a uma forma inspecionavel. Primeiro compare semantica: existencia dos campos, tipos, precisao de numeros, Unicode, nulos, ordem de arrays e aninhamento. Depois confira tamanho, bytes zero, campos binarios e trechos de controle. Se o formato permitir codificacoes equivalentes com bytes diferentes, defina uma comparacao canonica antes de exigir igualdade literal.
Em seguida aplique a camada exigida pelo canal e decodifique imediatamente o resultado entregue. Essa verificacao final separa uma escolha errada de serializador de um erro de transporte e deixa um caminho reproduzivel para diagnostico.
A ausencia de erro do conversor nao e aceitacao. O consumidor de destino ou um decodificador compativel deve ler a saida; mantenha a amostra, a versao do schema, o formato, a camada, o tamanho e a conclusao da comparacao. Falhas comuns incluem tratar Base64 como formato interno, perder numeros de campo Protobuf, recodificar bytes como texto ou aplicar uma segunda camada sem necessidade.
Se o receptor rejeitar a carga, volte a ultima camada validada, confira camada, schema e compatibilidade e reduza o caso a uma amostra minima reproduzivel. Um registro claro das tres camadas e mais confiavel do que tentar conversores aleatoriamente.
Guia de fluxo de trabalho
Use o conversor confirmado pelo protocolo ou pelos indicios da amostra para recuperar os bytes originais; registre incertezas em vez de adivinhar o formato.
Codifique ou decodifique em um formato binario realmente suportado pelo receptor; com Avro ou Protobuf guarde schema, numeros de campo e versao.
Restaure a amostra a partir do formato novo e compare campos, precisao numerica, Unicode, nulos, colecoes aninhadas, comprimento e bytes criticos antes de entregar.
Aplique uma camada de texto somente quando o canal exigir e decodifique o resultado imediatamente para confirmar os bytes internos ja validados.
Base64, ASCII85, Base91 e escapes hexadecimais apenas transportam bytes como texto; Avro, CBOR e Protobuf definem a estrutura da carga.
Use um formato compativel com o schema, os numeros de campo ou as regras de evolucao exigidas pelo receptor; uma sequencia Base64 nao identifica por si a serializacao interna.
Format Conversion
Codifica e decodifica texto para/de formato ASCII85 (versão Adobe)