Executando verificação de segurança...
1

JSON ou XML? Qual escolher?

Olá pessoal!!!

Sempre optei pelo uso de JSON em meus projetos. Essa escolha se dá tanto para o envio de dados via API quanto para o armazenamento de configurações de aplicativos. No entanto, sempre me questionei sobre as vantagens do XML e se ele possui alguma relevância nos dias atuais. Será que o XML ainda se destaca para determinados fins ou o JSON é suficiente para atender a todas as necessidades? Gostaria de entender melhor as razões por trás da escolha entre esses formatos.

Carregando publicação patrocinada...
3
1

A grande vantagem que eu via no XML era a opção de validação da estrutura por meio de uma definição XSD, mas o JSON possui o JSON Schema.

Pensando em aplicações móveis principalmente, com velocidade limitada para transmissão de dados, acredito que uma API em GraphQL (JSON) é muito mais eficiente pois trafeta apenas os dados realmente necessários para aquela situação.

1

No geral acredito que o XML seja preferido em estruturas de dados mais complexas, maiores e que necessitam de manipulacao de valores em pontos especificos.

Ao abrir um arquivo .docx com o 7ip por exemplo, podes ver que grande parte das definicoes sao feitas em estruturas similares a XML, casos onde um JSON seria confuso e pouco performatico.

1

Olá! Excelente pergunta.

Primeiramente, é importante entender a diferença entre "dados" e "informação". Dados são um conjunto de valores brutos ou fatos não processados. Por exemplo, os números brutos de vendas de uma empresa durante o mês. Informação, por outro lado, é o valor ou conhecimento extraído dos dados através da análise e interpretação.

JSON é geralmente é mais adequado para transferência de dados. JSON tem uma sintaxe mais simples e mais fácil de ler/gravar do que XML. É mais fácil para as máquinas e humanos analisarem e gerarem JSON, tornando-o ideal para transferir grandes quantidades de dados bem estruturados (Aonde o contexto pode ser complemente inferido pelo estrutura).

Exemplo: Um livro representado em JSON

{
  "book": {
    "title": "O Senhor dos Anéis",
    "author": "J.R.R. Tolkien",
    "year": 1954,
  }
}

XML por outro lado, é projetado para armazenar e transportar informações - onde os detalhes contextuais importam tanto quanto os dados brutos em si. Ele permite o uso de metadados - descrições dentro das tags - que podem fornecer informações adicionais sobre o valor contidos.

Exemplo: O mesmo livro representado em XML

<book>
   <!-- Este livro faz parte da série O Senhor dos Anéis -->
   <title idioma="Português">O Senhor dos Anéis</title>
   <!-- Este livro foi publicado em diferentes anos dependendo do país -->
   <year firstPublication="1954" BrazilPublication="1974">1954-1974</year>
   <author nacionalidade="Britânico">J.R.R. Tolkien</author>
</book>

Aqui você pode ver como a estrutura do XML permite que ele armazene mais informações adjacentes aos dados ( year, autor, title), que podem ser úteis em alguns casos.

1

Me corrija se eu estiver enganado, mas eu acho que isso não tem nada a ver com dados vs informação. Dá para transmitir ambos tanto por json quanto por XML. Eles são apenas formas diferentes de organização.

Dá para fazer isso que você fez com XML no json, também! Só mudar um pouco a estrutura:

{
  "title": {
    "idioma": "Português",
    "value": "O Senhor dos Anéis"
  },
  ...
}

Ou se preferir:

{
  "title": {
    "metadata": {
      "idioma": "Português",
    },
    "value": "O Senhor dos Anéis"
  },
  ...
}
1

Sim, o que quis abordar é um que um formato é mais adequado para transmitir dados enquanto outro para transmitir informações, mas isso é completamente subjetivo.

O que quis ilustrar com este exemplo é que quando existe um formato muito definido o JSON é mais adequado, mas quando existe informações "escondindas" fora da estrutura dos 'dados' o XML pode ser vanjataso, mas seu comentario esta sim exatamente correto.

1

Depende, se for uma estrutura com muita hierarquia e tipos de informações diferentes, como por exemplo uma nova fiscal eletrônica melhor o XML.
XML pode possuir XSD útil para validar o esquema do XML e se este está conforme as regras descritas no XSD, garantindo assim mais integridade aos dados.
Se é uma estrutura simples, melhor JSON.