Respostas:
Favorecer XML sobre JSON quando alguma dessas opções for verdadeira:
Favorie JSON sobre XML quando tudo isso for verdadeiro:
Uso JSON, a menos que seja necessário usar XML. É mais simples de entender e (porque requer menos sobrecarga de configuração) é mais fácil programar para leitura e gravação se as bibliotecas estiverem disponíveis no seu contexto, e elas são bastante onipresentes agora.
Quando a Amazon expôs seus catálogos como um serviço da Web, eles ofereceram JSON e XML. Algo como 90% dos implementadores escolheu o JSON.
Considerando o seu caso específico em que você já está fazendo javascript no lado do cliente, eu usaria o JSON pelos seguintes motivos:
Como o JSON é nativo do javascript, você teria que escrever menos código no lado do cliente - apenas eval()
(ou, melhor ainda JSON.parse()
) a string JSON e obter um objeto que você possa usar.
Ao mesmo tempo, avaliar o JSON no lado do cliente será mais eficiente e, portanto, mais rápido.
A serialização JSON produz seqüências mais curtas que XML. O uso do JSON reduzirá a quantidade de dados em execução no fio e melhorará o desempenho nesse sentido.
Aqui estão algumas leituras adicionais: http://www.subbu.org/blog/2006/08/json-vs-xml
eval()
JSON não é um grande não-não?
Algumas outras coisas que encontrei no relm XML vs JSON:
JSON é muito bom para
O que significa que tende a gostar de uma matriz ou matriz aninhada. No entanto, o JSON está ausente
Portanto, se você combinar dois ou mais serviços JSON, poderá haver possíveis conflitos de namespace. Dito isto, o JSON pode ser usado para cerca de 90% das mesmas coisas que o XML pode ser usado ao trocar dados na minha experiência.
Geralmente, o JSON é mais compacto e mais rápido de analisar.
Prefira XML se:
Um caso importante de (quase) XML: tentar detectar quando enviar trechos de HTML é mais benéfico do que enviar dados brutos. A AHAH pode fazer maravilhas em aplicativos simples, mas frequentemente ignorados. Geralmente, esse estilo pressupõe que um servidor envie fragmentos HTML que serão incorporados na página da Web sem processamento.
Geralmente, nos casos da AHAH, o CSS está sendo aproveitado ao máximo para massagear visualmente os trechos e implementar condições simples, como ocultar / mostrar partes relevantes do trecho, usando configurações específicas do usuário ou específicas do aplicativo.
JSON é fácil e rápido de analisar. XML é um pouco mais difícil de analisar e é mais lento para analisar e transferir (na maioria dos casos).
Como você está usando o jQuery, sugiro usar o JSON: o jQuery pode recuperar dados JSON e convertê-los em um objeto Javascript automaticamente. De fato, você pode converter dados JSON em um objeto Javascript usando eval . O XML teria que ser transmitido manualmente por você (não sei como isso funciona em Javascript, mas é difícil / mais irritante na maioria dos idiomas com os quais usei bibliotecas XML).
O JSON é sempre preferível em termos do processamento que o navegador do cliente precisa fazer para analisar os dados. Além disso, o JSON é um formato leve de troca de dados.
A análise de XML sempre consome muitos recursos do navegador e deve ser evitada o máximo que pudermos, a menos que seja necessário.
Eu tenho um post sobre o assunto detalhando o histórico de protocolos da Web (SOAP, XML, JSON, REST, POX etc.), fornecendo um resumo, bem como algumas vantagens e desvantagens de cada um: http://www.servicestack.net / mythz_blog /? p = 154
Na verdade, acho que você pode desenhar muitas semelhanças entre XML e JSON comparando as diferenças entre as linguagens dinâmica (JSON) e estática (XML).
Basicamente, o XML é um formato de serialização mais rígido e rígido que pode ser opcionalmente verificado com um esquema que o acompanha (que é um XSD ou DTD). Os XSDs são bastante elaborados e permitem que você descreva muitos tipos diferentes, como datas, horas, enumerações, tipos definidos pelo usuário e até mesmo herança de tipos, etc. O SOAP efetivamente se baseia no conjunto de recursos XML, fornecendo uma maneira padronizada de descrever seus serviços da Web ( por exemplo, tipos e operações) através de um WSDL. A verbosidade e a complexidade da especificação WSDL significa que pode ser mais tedioso se desenvolver, mas ao mesmo tempo há muito mais ferramentas disponíveis para você e a maioria das linguagens modernas fornece ferramentas automatizadas para gerar proxies de clientes, tirando parte do fardo. desligado ao tentar interoperar com serviços externos.
Eu ainda recomendaria o uso de XML para seus serviços da Web se você tiver um 'serviço corporativo' bem definido que não esteja sujeito a alterações frequentes ou se precisar acessar o serviço da Web a partir de vários idiomas diferentes.
Por todos os seus benefícios, o XML também traz desvantagens. Ele se baseia em espaços de nome para fornecer um formato extensível digitado e permite especificar atributos e elementos no mesmo documento. Ter espaços de nomes diferentes no documento significa muitas vezes ao usar um Analisador de XML para extrair dados, você também precisará fornecer o espaço de nomes de cada elemento que deseja recuperar / atravessar. Também extrapola a carga útil, tornando-a mais detalhada do que precisa ser. Ter a opção de gerar atributos e elementos significa que suas classes não são mapeadas adequadamente para um documento XML. Somente esses recursos o tornam um ajuste programático inadequado para a maioria dos idiomas, tornando-o mais tedioso e complicado de trabalhar.
O JSON, por outro lado, é o oposto completo do XML de várias maneiras, pois é muito pouco digitado e possui suporte simples para tipos básicos: Number, Bool, string, Objects and Arrays. Todo o resto basicamente tem que caber em uma corda. Isso não é bom ao tentar se comunicar através dos limites do idioma, pois você precisará seguir algumas especificações fora do padrão fora da banda, se desejar oferecer suporte a tipos mais específicos. No lado positivo, seu conjunto limitado de recursos faz um bom ajuste programático para a maioria dos idiomas - e é perfeitamente adequado para JavaScript, pois uma string JSON pode ser avaliada diretamente no objeto JavaScript.
Tamanho e desempenho
Eu tenho alguns benchmarks do banco de dados northwind disponíveis comparando o tamanho e a velocidade entre as implementações Microsofts XML e JSON. Basicamente, o XML é mais do que o dobro do tamanho do JSON, mas, ao mesmo tempo, parece que a Microsoft se esforçou muito para otimizar o XML DataContractSerializer, pois é mais de 30% mais rápido que o JSON. Parece que você precisa fazer uma troca entre tamanho e desempenho. Não satisfeito com esse fato, decidi escrever meu próprio JsonSerializer rápido, que agora é 2,6x mais rápido que o XML da MS - o melhor dos dois mundos :).
Ao seguir a rota JSON, você se depara com os mesmos problemas que o XML enfrentou há 10 anos:
A mistura de dados de duas fontes diferentes em um pacote JSON pode fazer com que os rótulos dos elementos colidam entre si. Misture uma guia de remessa e uma fatura e, de repente, o endereço De pode significar algo bem diferente. É por isso que o XML possui espaços para nome .
A conversão entre diferentes estruturas JSON exigiria a criação de código mundano. Uma maneira mais declarativa de mapear dados facilitaria o trabalho. É por isso que o XML tem XSLT .
É necessária a descrição da estrutura de um pacote JSON - seus campos, tipos de dados etc. - para que as pessoas se conectem aos seus serviços. É essencial ter um idioma de metadados para isso. É por isso que o XML tem esquemas .
A manutenção de duas conversas simultâneas cliente-servidor é necessária. Se você fizer duas perguntas ao servidor e receber uma resposta de volta, como você sabe qual pergunta ele responde? É por isso que o XML tem correlação WS .
Desde a primeira linha em http://json.org/xml.html
XML (Extensible Markup Language) é um formato de texto derivado da SGML (Standard Generalized Markup Language). Comparado ao SGML, o XML é simples. A HyperText Markup Language (HTML), por comparação, é ainda mais simples. Mesmo assim, um bom livro de referência em HTML tem uma polegada de espessura. Isso ocorre porque a formatação e estruturação de documentos é um negócio complicado. . . .
Claramente, o JSON é mais rápido, mas é ainda mais claro que é difícil de ler. Use JSON para velocidade, use XML se houver interação humana e você possa sacrificar a velocidade.
Uso JSON para qualquer tipo de configuração, intercâmbio de dados ou mensagens. Só uso XML se for necessário por outros motivos ou para marcar semanticamente dados semelhantes a documentos.
XML e JSON são suportados pela Microsoft. Literais XML foram o novo recurso interessante do VB 9. Na próxima versão do ASP.NET 4.0, o JSON é obrigatório para aproveitar o poder do modelo de cliente.
A partir da pergunta que você fez, parece que o JSON pode ser a escolha certa, pois é fácil processar no lado do cliente com ou sem o jQuery.
Usando JSON
Usando XML
Achei este artigo no bazar digital realmente interessante.
Algumas partes do artigo são citadas abaixo.
Sobre os profissionais JSON:
Se tudo o que você deseja transmitir são valores atômicos ou listas ou hashes de valores atômicos, o JSON tem muitas das vantagens do XML: é diretamente utilizável na Internet, suporta uma ampla variedade de aplicativos, é fácil escrever programas para processar JSON, possui poucos recursos opcionais, é legível por humanos e razoavelmente claro, seu design é formal e conciso, é fácil criar documentos JSON e usa Unicode. ...
Sobre profissionais de XML:
O XML lida notavelmente bem com a riqueza total de dados não estruturados. Não estou preocupado com o futuro do XML, mesmo que sua morte seja comemorada com alegria por um grupo de designers de APIs da web.
E eu não resisto a colocar um "eu te disse!" token na minha mesa. Estou ansioso para ver o que as pessoas JSON fazem quando são solicitadas a desenvolver APIs mais ricas. Quando eles querem trocar dados menos estruturados, eles os colocam no JSON? Vejo menções ocasionais de uma linguagem de esquema para JSON. Outras linguagens seguirão? ...
Regras rápidas:
Explicação:
A única função do JSON é serializar dados orientados a objetos usando os tipos de dados comuns à maioria das linguagens de programação: listas , hashes e escalares e, para esse fim, não podem ser superados ou aprimorados. A saber "JSON não tem número de versão [como] nenhuma revisão da gramática JSON é antecipada". - Douglas Crockford (Não pode superar isso como um sinal de que você faz seu trabalho perfeitamente)
O XML já foi vendido como um formato de troca de dados, mas considere os dois casos de uso mais comuns: Comunicação cliente-servidor assíncrona (AJAX) - o JSON praticamente substituiu o XML inteiramente (o X realmente deve ser um J) e serviços da Web : JSON fez do XML uma alternativa redundante.
A outra coisa para a qual XML foi amplamente utilizado foi arquivos de dados graváveis / legíveis (?) Humanos para programas, mas também aqui você tem um formato mais conciso, mais amigável ao programa e mais amigável ao humano no YAML, um superconjunto JSON.
Portanto, para representação de dados, o JSON supera o XML em geral. O que resta para o XML, então? Representação de documento de conteúdo misto, para o qual foi planejada .
A maioria das tecnologias da Web mais recentes funciona com JSON, portanto, é definitivamente um bom motivo para usar JSON. Uma grande vantagem é que, em XML, você pode representar de várias maneiras diferentes as mesmas informações, o que no JSON é mais direto.
JSON IMHO também é muito mais claro que XML, o que torna uma vantagem clara para mim. E se você estiver trabalhando com .NET, o Json.NET é um vencedor claro para ajudá-lo a trabalhar com JSON.