JSON: Diferenzas entre revisións

Contido eliminado Contido engadido
JYBot (conversa | contribucións)
m r2.7.1) (Bot: Modifico: fa:جی‌سن
Sen resumo de edición
Liña 1:
{{Wikificar}}
{{Ortografía}}
'''JSON''', acrónimo de ''JavaScript Object Notation'', é un formato lixeiro para o intercambio de datos. JSON é un subconjuntosubconxunto da notación literal de obxectos de [[JavaScript]] que non require o uso de [[XML]].
 
A simplicidade de JSON deu lugar á generalizaciónxeralización do seu uso, especialmente como alternativa a XML en [[AJAX]]. Unha das supostas vantaxes de JSON sobre XML como formato de intercambio de datos neste contexto é que é moito máis sinxelo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON pódese analizar facilmente usando o procedemento <code>[[eval]]()</code>, o cal foi fundamental para que JSON fose aceptado por parte da comunidade de desarrolladoresdesenvolvedores AJAX, debido á ubicuidadubicuidade de JavaScript en case calquera [[navegador web]].
 
Na práctica, os argumentos a favor da facilidade de desenvolvemento de analizadores ou do rendemento dos mesmos son pouco relevantes, debido ás cuestións de seguridade que expón o uso de <code>eval()</code> e o auxe do procesamiento nativo de XML incorporado nos navegadores modernos. Por esa razón, JSON emprégase habitualmente en contornas onde o tamaño do fluxo de datos entre cliente e servidor é de vital importancia (de aquí o seu uso por Yahoo, Google, etc, que atenden a millóns de usuarios) cando a fonte de datos é explicitamente de fiar e onde non é importante o non dispor de procesamiento XSLT para manipular os datos no cliente.
 
Aínda que é frecuente ver JSON situado ''contra'' XML, tamén é frecuente o uso de JSON e XML na mesma aplicación. Por exemplo, unha aplicación de cliente que integra datos de [[Google Maps]] con datos meteorolóxicos en [[SOAP]] fan necesario soportar ambos osámbolos formatos.
 
Cada vez hai máis soporte de JSON mediante o uso de paquetes escritos por terceiras partes. A lista de linguaxes soportadas inclúe , [[ActionScript]], [[linguaxe de programación C|C]], [[C++]], [[C Sharp|C#]], [[ColdFusion]], [[Common Lisp]], [[Delphi]], [[E programming language|E]], [[Linguaxe de programación Eiffel|Eiffel]], [[Linguaxe de programación Java|Java]], [[JavaScript]], [[ML]], [[Ocaml|Objective CAML]], [[Perl]], [[PHP]], [[Python]], [[Rebol]], [[Ruby]], [[Lua]] e [[Visual FoxPro]].
Liña 22:
</source>
 
Na práctica, as consideracións de seguridade polo xeral recomendan non usar ''eval'' sobre datos crus e debería usarse un analizador JavaScript distinto para garantir a seguridade. O analizador proporcionado por JSON.org usa <code>eval()</code> na súa función de análise, protexéndoa cunha [[expresión regular]] de forma que a función só ve expresións seguras.
 
Un exemplo de acceso a datos JSON usando [[XMLHttpRequest]] é:
Liña 48:
</source>
 
Obsérvese que o uso de XMLHttpRequest neste exemplo non é compatible con todos ostódolos navegadores, aínda que existen variacións sintácticas para [[Internet Explorer]], [[Opera (navegador)|Opera]], [[Safari (navegador)|Safari]], e navegadores baseados en [[Mozilla Application Suite|Mozilla]].
 
Tamén é posible usar elementos <code><iframe></code> ocultos para solicitar os datos de maneira asíncrona, ou usar peticións <code><form target="url_to_cgi_script" /></code>. Estes métodos eranforan os máis habituais antes doda advenimientochegada do uso xeneralizadoxeralizado de XMLHttpRequest.
 
Hai unha [http://ajax.schwarz-interactive.de biblioteca] para o framework .NET que exporta clases .NET coa sintaxe de JSON para a comunicación entre cliente e servidor, en ambos osámbolos sentidos.
 
== Exemplo de JSON ==
Liña 85:
</source>
 
Aínda que os defensores de JSON a miúdo notan que este é máis abreviado que XML, obsérvese que os dous exemplos teñen uns 190 caracteres cando se eliminan os espazos en branco. Ademais, o uso de compresión GZIP para enviar os datos ao navegador pode reducir a diferenza de tamaños entre ambos osámbolos formatos. De feito, cando se usa GZIP sobre os exemplos anteriores o exemplo en XML é máis pequeno por 6 bytes. Aínda que isto non é concluínte, mostra que é necesario experimentar co conxunto de datos a tratar para determinar que formato será máis eficiente en termos de tamaño. JSON non é sempre máis pequeno que XML.
 
O beneficio de JSON, entón, non é que sexa máis pequeno á hora de transmitir, senón que representa mellor a estrutura dos datos e require menos codificación e procesamiento.
 
== Comparación con XML e outras linguaxes de marcado ==
XML goza de maior soporte e ofrece moitas máis ferramentas de desenvolvemento (tanto no lado do cliente como no lado do servidor). Hai moitos analizadores JSON no lado do servidor, existindo polo menos un analizador para a maioría das contornas. Nalgunhas linguaxes, como Xava ou PHP, hai diferentes implementacionesimplementacións onde escoller. En JavaScript, a análise é posible de maneira nativa coa función <code>eval()</code>. Ambos osÁmbolos formatos carecen dun mecanismo para representar [[BLOB|grandes obxectos binarios]].
 
Con independencia da comparación con XML, JSON pode ser moi compacto e eficiente se se usa de maneira efectiva. Por exemplo, a aplicación [[DHTML]] de procura en [http://barracudaserver.com/examples/barracudadrive/commandline.html#API BarracudaDrive] recibe as listaxes de directorio como JSON desdedende o servidor. Esta aplicación de procura está permanentemente consultando aoó servidor por novos directorios, e é notablemente rápida, mesmo sobre unha conexión lenta.
 
As contornas no servidor normalmente requiren que se incorpore unha función ou obxecto analizador de JSON. Algúns programadores, especialmente os familiarizados coa linguaxe [[C]], atopan JSON máis natural que XML, pero outros desarrolladoresdesenvolvedores atopan a súa concisa notación algo confusa, especialmente cando se trata de datos fortemente jerarquizadosxerarquizados ou aniñados moi profundamente.
 
Hai máis comparacións entre JSON e XML nesta [http://www.json.org/example.html páxina de exemplo] (en inglés).
 
[[YAML]] é un superconjuntosuperconxunto de JSON que trata de superar algunhas das limitacións deste. Aínda que é significativamente máis complexo ([http://bob.pythonmac.org/archives/2005/07/19/what-happened-to-yaml/]), aínda pode considerarse como lixeiro. A linguaxe de programación [[Ruby]] utiliza YAML como o formato de [[serialización]] por defecto. Así pois, é posible manexar JSON con bastante sinxeleza.
 
 
Liña 116:
 
 
;Titoriais
;Tutoriais
* [http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=AJAXWithoutXML AJAX without XML] Comparación entre XML, JSON e obxetos Javascript (en inglés)
* [http://www.developer.com/lang/jscript/article.php/3596836 Speeding Up AJAX with JSON] Mostra o sencillosinxelo que é referenciar JSON nunno lugar de XML (en inglés)
* [http://webelop.com.ar/ajax/comunicacion-ajax-php-con-json/ Comunicación AJAX - PHP con JSON] Mostra como obter información en AJAX consultando un arquivo PHP. Ten en conta o problema dos caracteres especiais. (en castelán)
 
;Implementacións
* [http://search.cpan.org/search?query=JSON&mode=all JSON] Módulos [[Perl]] en [[CPAN]] (en inglés)
* [http://www.curiousconcept.com/jsonformatter/ JSON Formatter], Programa prapara dar formato e validar JSON online (en inglés)
* [http://www.victorespina.com.ve/wiki/index.php?title=JSON_Parser_Para_VFP qdfoxJSON], Implementación de JSON pra Visual FoxPro 6.0 oou superior
 
[[Categoría:Linguaxes de programación]]