En el articulo XML utilizamos un ejemplo de un archivo XML. Para ejemplificar JSON volveremos a presentar ese archivo XML y luego el equivalente JSON, para ver las diferencias entre ambos estándares de intercambio de datos.
Además en este artículo presentaré otros ejemplos de equivalencias, para que comprenda la sintaxis JSON y su equivalencia con XML.
Ejemplo de XML
<Clientes>
<Cliente ID="283">
<Nombre>Juan Carlos Crespin</Nombre>
<Direccion verificada="si">
<Calle>Avda Perú</Calle>
<Numero>235</Numero>
<Ciudad>Bahía Blanca</Ciudad>
<Provincia>Buenos Aires</Provincia>
<CodigoPostal>8000</CodigoPostal>
<Pais>Argentina</Pais>
</Direccion>
</Cliente>
</Clientes>
Equivalente en JSON
{
"Clientes": {
"Cliente": {
"-ID": "283",
"Nombre": "Juan Carlos Crespin",
"Direccion": {
"-verificada": "si",
"Calle": "Avda Perú",
"Numero": "235",
"Ciudad": "Bahía Blanca",
"Provincia": "Buenos Aires",
"CodigoPostal": "8000",
"Pais": "Argentina"
}
}
}
}
Otro Ejemplo de XML
<persona>
<nombre>juan</nombre>
<edad>22</edad>
<estudios>
<estudio>primario</estudio>
<estudio>secundario</estudio>
</estudios>
</persona>
...y su equivalente en JSON
{
"persona":{
"nombre":"juan",
"edad":22,
"estudios":["primario","secundario"]
}
}
Otro XML
<empleados>
<empleado>
<nombre>Jorge</nombre>
<apellido>Mesa</apellido>
<edad>28</edad>
</empleado>
<empleado>
<nombre>Ana</nombre>
<apellido>Sánchez</apellido>
<edad>21</edad>
</empleado>
<empleado>
<nombre>Pedro</nombre>
<apellido>Lee</apellido>
<edad>44</edad>
</empleado>
</empleados>
Equivalencia en JSON
{
"empleados": {
"empleado": [
{ "nombre":"Jorge" , "apellido":"Mesa", "edad":28 },
{ "nombre":"Ana" , "apellido":"Sánchez", "edad":21 },
{ "nombre":"Pedro" , "apellido":"Lee","edad":44 }
]
}
}
Un XML que usa atributos
<libros>
<libro id="1" year="1999">
<autores>
<nombre>Ricardo Pérez</nombre>
<nombre>Marta Gómez</nombre>
</autores>
</libro>
</libros>
Equivalente en JSON
{
"libros": {
"libro": {
"-year": "1999",
"-id": "1",
"autores": {
"nombre": [
"Ricardo Pérez",
"Marta Gómez"
]
}
}
}
}
Como podemos ver, si tenemos que transmitir estas estructuras por internet la notación JSON es más liviana. Otra ventaja es que a partir de la estructura JSON, podemos generar una variable Javascript que recree el objeto literal, mediante la función eval y asi la navegación y el recorrido es mucho más facil en el caso que usemos JSON. Para más información sobre este tema, vea Cómo parsear una variable JSON con JavaScript
Sin embargo el uso de eval() no es seguro, ya que puede generar problemas derivados de una incorrecta interpretación de nuestro código. Para una mejor comprensión de esto, vea el articulo publicado por Eric Lippert Eval is Evil (Artículo en inglés)