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

[ Conteúdo ] - JSON e algumas das suas principais limitações

Introdução:

Primeiramente quero deixar bem claro que a ideia não é desmerecer o JSON e nem nada do tipo, e sim orientar pessoas que não estão cientes dessa limitações evitar problemas no futuro, assim aumentando seu conhecimento técnico sobre JSON. Antes de mais nada eu presumo que você, leitor, tenha tido algum contato com JSON antes, sem mais delongas.

Tipos de dados limitados:

JSON aceita apenas strings, numbers, objects, arrays e booleanos. Caso queira representar algum tipo de dado mais complexo, vai ter que procurar uma alternativa que supra essa limitação como um biblioteca ou técnica. Lembrando que caso queria ler bigInt em um JSON, vai lançar um typeError. E se colocar functions, undefined, infinity, symbols, dentre alguns outros tipos, serão convertidos para null. Alguns sendo omitidos e outros não (consulte a documentação para ter acesso a detalhes mais aprofundados)

Sem aplicação de esquema

JSON Não aplica um esquema, o que significa que os valores podem ter comportamento diferente dependo dos recursos. Com isso, nunca temos certeza se os dados são consistente ou estão devidamente formatados.

JSON não possui Built-in Erro handle (mecanismo que lida com erros internamente)

Isso significa que a maiorias dos erros que podem eventualmente ocorrer em JSON só vão ser percebidos quando em execução. No máximo, JSON alerta sobre erros de sintaxe como nome de propriedade entre aspas. Então cuidado e sempre leve em consideração que o erro pode ser relacionado ao arquivo JSON.

Não tem suporte a dados binário:

Se você quiser representar dados como vídeo ou audio em JSON, vai ter que codificar em um formato como base64 antes de transformar em um arquivo JSON.

JSON não suporta comentários (é sério?)

Pse senhoras e senhores, JSON não suporta comentários, assim dificultando a explicação sobre do que se trata tal dados e etc... Já reforço para dar bons nomes para suas propriedades tornando tudo semântico, deixe sua equipe feliz :)

Conclusão

Apesar dessas limitações, o JSON é amplamente utilizado devido à sua simplicidade, facilidade de uso e amplo suporte em diferentes linguagens de programação.

O intuito não é desmerecer JSON, mas sim alertar sobre suas limitações e garantir umas horinhas de sono extras.

Carregando publicação patrocinada...
3
3

Realmente a falta de comentário é algo estranho. Mas não faz tanta falta porque as pessoas usam JSON onde deveriam usar Protobuf e coisas assim, e aí o comentário não faz sentido mesmo.

Por isso que eu falo que quase tudo que criaram para web foi mal pensado. Aí tem gente que acha que eu sou mala por dizer isso :D Mas o importante que está todo mundo usando e feliz, só a engenharia sofre,amas ela não tem sentimentos e tá tudo bem :)


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

2

se você precisar de comentários em um JSON eu acho que tem coisa errada aí. o JSON tem uma sintaxe simples e legível, agora se você escrever ele minificado aí fica difícil mesmo de entender.

2

JSON é utilizado pra comunicação na web, quando menos coisa no buffer melhor.
Eu odiaria receber um JSON de 200kb sendo 150kb só porcaria que seria descartada no parse.

Mas se o JSON for usado como arquivo de configuração, aí a o esquema é diferente.
Mas comentários ainda não faz falta, de você não entende o JSON ou você é burro ou o Dev que escreveu é ruim.

Existem alternativas, pode usar yaml ou xml também, não tem problema.

Mas muito bom você ter explicado, eu realmente sinto falta de suporte pra binário no JSON, transmitir mídia via JSON é um grande desafio, você precisa fazer todo um processamento pra transformar em string e fazer o envio. Depois outro processamento pra fazer o parse.
Isso acaba usando muito processador e memória RAM desnecessário, já que tudo entra no buffer, ter problemas de desempenho é quase certo.

No front end por exemplo, você precisa utilizar técnicas de paginação e lazy loading se quiser receber mídia da API, se não você mata a máquina do usuário.
Agora se você receber o arquivo binário, entra no buffer só uma vez.

Não entendeu? observe:

Back:
img.png --> buffer-->
String --> buffer --> http

Front:
JSON --> buffer --> Parse -->
buffer --> img.parse --> buffer
--> img.png --> render

E a RAM?