Pergunta

No momento, estamos planejando um novo API para uma aplicação e debater os vários formatos de dados que deve usar para intercâmbio. Há uma discussão bastante intensa em curso sobre os méritos relativos de CSV, JSON e XML.

Basicamente, o ponto crucial do argumento é se devemos apoiar CSV em tudo por causa da falta de recursão ( ou seja, ter um documento que tem multiple authors e multiple references exigiria multiple API calls obter toda a information ).

Nas experiências que possa ter tido quando se trabalha com informações de Web APIs e coisas que podemos fazer para tornar a vida mais fácil para os desenvolvedores que trabalham com o nosso API.


A nossa decisão:

Nós decidimos oferecer XML e JSON devido à dificuldade em recursão em CSV precisando de várias chamadas para uma única operação lógica. JSON não tem um analisador em Qt e Protocol Buffers não parece ter uma implementação non-alpha PHP então eles estão fora para o momento também, mas provavelmente será suportado eventualmente.

Foi útil?

Solução

CSV é certo. JSON é uma notação objeto mais compacto do que XML, por isso, se você está procurando um grande volume tem a vantagem. XML tem ampla penetração no mercado (Eu amo essa frase) e é suportado por todas as linguagens de programação e suas estruturas centrais. JSON é chegar lá (se já não estiver lá).

Pessoalmente, eu gosto dos colchetes. Eu apostaria mais devs estão confortáveis ??com trabalhar com dados XML que com JSON.

Outras dicas

Vantagens:

  • XML - Muitas bibliotecas, Devs estão familiarizados com ele, XSLT, pode ser easiily validado por cliente e servidor (XSD, DTD), dados hierárquicos
  • JSON - facilmente interpretado no lado do cliente, notação compacta, dados hierárquicos
  • CSV - (?) É aberto no Excel

Desvantagens:

  • XML - inchado, mais difícil de interpretar em JavaScript que JSON
  • JSON -. Se usados ??de forma inadequada pode representar uma falha de segurança (não usar eval), Nem todos os idiomas têm bibliotecas para interpretá-lo
  • CSV - não suporta dados hierárquicos, você seria o único a fazê-lo, é realmente muito mais difícil do que a maioria devs pensar para analisar arquivos CSV válidos (valores CSV pode conter novas linhas, desde que eles estão entre aspas, etc ).

Diante do exposto, eu não iria incomodar mesmo apoiando CSV. O cliente pode gerá-lo a partir de qualquer XML ou JSON se for realmente necessário.

CSV tem tantos problemas como um modelo de dados complexo, que eu não iria utilizá-lo. XML é muito flexível e fácil de programar com -. Cliente não terá nenhum problema de codificação geradores e analisadores XML, você pode até mesmo fornecer analisadores de amostra usando SAX

Você check-out formato de dados de rede do Google? É chamado de Protocol Buffers. Não sei se é útil para um serviço REST, porém, como ele ignora que a camada HTTP inteiro também.

XML pode ser um peso pesado pouco às vezes. JSON é bastante agradável, no entanto, tem um bom suporte linguagem e dados JSON pode ser traduzido diretamente para objetos nativos em muitas playforms.

Eu não tenho nenhuma experiência com JSON, CSV funciona até certo ponto quando seus dados é muito tabular e uniformemente estruturado. XML pode se tornar inviável muito rapidamente, especialmente se você não tem uma ferramenta que cria as ligações a seus objetos automaticamente.

Eu não tentei isso também, mas olhar realmente bom, formato simples Protocol Buffers do Google , cria ligações automáticas para C ++, Java e Python e implementos serialização e deserialisation dos objetos criados.

que Allain Lalonde já disse , uma vantagem adicional de CSV é que ele tende a ser mais compacto do que XML ou mesmo JSON. Então, se seus dados são estritamente tabular, com um hyerarchy totalmente plana, CSV pode ser uma escolha correta. desvantagens Additonal de CSV é que ele pode usar diferentes delimitadores e separadores decimais, depeding de qual ferramenta (e mesmo país!) gerou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top