Introducció a JSON

Leer en castellano 

JSON (Notació d’Objectes de JavaScript) és un format lleuger d’intercanvi de dades el qual està basat en un subconjunt literal d’objectes del Llenguatge de Programació JavaScript.
Llegir-lo i escriure-ho és simple per persones, mentre que per a les màquines és simple d’interpretar i generar-lo. JSON és un format de text que és completament independent del llenguatge de programació però utilitza convencions que són àmpliament conegudes pels programadors de la família de llenguatges C, incloent C++, C#, Java, JavaScript, Perl, i molts altres.
Aquestes propietats fan que JSON sigui un llenguatge ideal per a l’intercanvi de dades i una molt bona alternativa (o complement) a XML degut a la seva simplicitat i lleugeresa.

JSON està constituït per dues estructures:

– Una col•lecció de parells de nom/valor. En diversos llenguatges això és conegut com un objecte, registre, estructura, diccionari, taula hash, llista de claus o un arranjament associatiu.
– Una llista ordenada de valors. En la majoria dels llenguatges, això s’implementa com arranjaments, vectors, llistes o seqüències.

Els vectors i altres estructures seqüencials per l’estil són estructures universals; virtualment tots els llenguatges de programació les suporten d’una manera o altra. És raonable que un format d’intercanvi de dades que és independent del llenguatge de programació es basi en aquestes estructures.

En JSON, les estructures es presenten d’aquestes formes:

– Un objecte és un conjunt desordenat de parells nom/valor. Un objecte comença amb “{“ (clau d’obertura) i acaba amb “}” (clau de tancament). Cada nom és seguit per dos punts i els parells nom / valor estan separats per una coma.
– Un vector es una col•lecció de valors que comença amb “[“ i acaba amb “]”. Els valors es separen per una coma.
– Un valor pot ser una cadena de caràcters amb cometes dobles, o un número , o true o false o null, o un objecte o un vector. Les estructures poden ser niades.
– Una cadena de caràcters es una col•lecció de 0 o més caràcters Unicode, tancats entre cometes dobles i usant barres divisòries invertides com escape. Un caràcter esta representat per una cadena de caràcters d’un únic caràcter.
– Un número es similar a un número en C o JAVA , excepte que no es fan servir els formats octals i hexadecimals.

Aquí un exemple simple per la definició d’una barra de menús:

{“menu”: {
“id”: “file”,
“value”: “File”,
“popup”: {
“menuitem”: [
{“value”: “New”, “onclick”: “CreateNewDoc()”},
{“value”: “Open”, “onclick”: “OpenDoc()”},
{“value”: “Close”, “onclick”: “CloseDoc()”}
]
}
}
}

La representació JSON es descriu en relació amb la representació XML de la següent manera:

– Els noms dels membres d’objecte JSON són els mateixos que els noms dels elements i atributs XML, inclosos els elements que poden repetir-se.
– En els tipus de dades, el tipus primitiu integer es representa mitjançant un int nadiu JSON, mentre la dada booleana en JSON es representa mitjançant els valors “true” i “false”. Altres tipus primitius com els strings, els decimals, etc es representen com una cadena JSON, utilitzant la mateixa serialització com la forma XML (incloent instant, que es representa com a text pla, no en un dels formats de data JSON personalitzats proposats).
– Igual que en XML, els atributs de propietat JSON mai tenen valors buits, s’omet un valor si està buit.

Hi ha diferències també:

– No hi ha espais de noms (namespaces) en la representació JSON.
– L’ordre no és significatiu en la representació JSON.
– JSON no té una noció d’atributs davant dels elements, de manera que els atributs (xml: id, valor) són tractats com a membres d’objectes JSON.
– JSON té una notació per als vectors i matrius, que s’utilitza per a representar elements que es repeteixen. Cal tenir en compte que aquest és el cas, inclús encara si no es repeteixen en la instància particular.
– L’element <div> XHTML en el tipus de dades narrativa es representa com una sola cadena escapada de XHTML. Això és per evitar problemes en JSON amb contingut mixt etc. XHTML majoritàriament s’ajusta a les regles descrites anteriorment.
– També es pot mencionar que JSON és més lleuger que el format XML a l’ocupar menys espai i representar millor les estructures de les dades.

Exemples per contrastar XML i JSON:

el següent fragment en XML:

<date value=”1972-11-30″/>
<deceased value=”false”/>
<count value=”23″/>

està representat en JSON com:

“date” : { value: “1972-11-30” }
“deceased” : { value: false }
“count” : { value: 23 }

Tots els elements XML poden tenir un atribut ‘id’, que es representa en JSON com una propietat de nom “_id”:

el següent fragment en XML:

<dob id=”314159″ value=”1972-11-30″/>

està representat en JSON com:

“dob”: {
“_id”: “314159”,
“value”: “1972-11-30”
}

Repetició d’elements:

Els elements repetits es fonen dins d’un vector JSON amb el nom de l’element, de manera que si un element <dob> es repeteix en XML, en JSON queda dins d’un vector.

el següent fragment en XML:

<dob value=”2011-11-30″/>
<dob id=”314159″ value=”1972-11-30″/>

està representat en JSON d’aquesta manera:

“dob”: [
{“value”: “2011-11-30”},
{“_id”: “314159”, “value”: “1972-11-30”}
]

 

Llegir en català 

JSON (Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos el cual está basado en un subconjunto literal de objetos del Lenguaje de Programación JavaScript.
Leerlo y escribirlo es simple para personas, mientras que para las máquinas es simple de interpretar y generarlo. JSON es un formato de texto que es completamente independiente del lenguaje de programación pero utiliza convenciones que son ampliamente conocidas por los programadores de la familia de lenguajes C, incluyendo C++, C #, Java, JavaScript, Perl, y muchos otros.
Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos y una muy buena alternativa (o complemento) a XML debido a su simplicidad y ligereza.

JSON está constituido por dos estructuras:

– Una colección de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un arreglo asociativo.
– Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o secuencias.

Los vectores y otras estructuras secuenciales por el estilo son estructuras universales; virtualmente todos los lenguajes de programación las soportan de una manera u otra. Es razonable que un formato de intercambio de datos que es independiente del lenguaje de programación se base en estas estructuras.

En JSON, las estructuras se presentan de estas formas:

– Un objeto es un conjunto desordenado de pares nombre/valor. Un objeto comienza con “{” (llave de apertura) y termina con “}” (llave de cierre). Cada nombre es seguido por dos puntos y los pares nombre / valor están separados por una coma.
– Un vector es una colección de valores que empieza con “[” y termina con “]”. Los valores se separan por una coma.
– Un valor puede ser una cadena de caracteres con comillas dobles, o un número, o true o false o null, o un objeto o un vector. Las estructuras pueden ser anidadas.
– Una cadena de caracteres es una colección de 0 o más caracteres Unicode, encerrados entre comillas dobles y usando barras divisorias invertidas como escape. Un carácter está representado por una cadena de caracteres de un único carácter.
– Un número es similar a un número en C o JAVA, excepto que no se usan los formatos octales y hexadecimales.

Aquí un ejemplo simple para la definición de una barra de menús:

{“menu”: {
“id”: “file”,
“value”: “File”,
“popup”: {
“menuitem”: [
{“value”: “New”, “onclick”: “CreateNewDoc()”},
{“value”: “Open”, “onclick”: “OpenDoc()”},
{“value”: “Close”, “onclick”: “CloseDoc()”}
]
}
}
}

La representación JSON se describe en relación con la representación XML de la siguiente manera:

– Los nombres de los miembros de objeto JSON son los mismos que los nombres de los elementos y atributos XML, incluidos los elementos que pueden repetirse.
– En los tipos de datos, el tipo primitivo integer se representa mediante un int nativo JSON, mientras el dato booleana en JSON se representa mediante los valores “true” y “false”. Otros tipos primitivos como los strings, los decimales, etc se representan como una cadena JSON, utilizando la misma serialización como la forma XML (incluyendo instante, que se representa como texto plano, no en uno de los formatos de fecha JSON personalizados propuestos).
– Al igual que en XML, los atributos de propiedad JSON nunca tienen valores vacíos, se omite un valor si está vacío.

Hay diferencias también:

– No hay espacios de nombres (namespaces) en la representación JSON.
– El orden no es significativo en la representación JSON.
– JSON no tiene una noción de atributos ante los elementos, de modo que los atributos (xml: id, valor) son tratados como miembros de objetos JSON.
– JSON tiene una notación para los vectores y matrices, que se utiliza para representar elementos que se repiten. Hay que tener en cuenta que este es el caso, incluso aún si no se repiten en la instancia particular.
– El elemento <div> XHTML en el tipo de datos narrativa se representa como una sola cadena escapada de XHTML. Esto es para evitar problemas en JSON con contenido mixto etc. XHTML mayoritariamente se ajusta a las reglas descritas anteriormente.
– También se puede mencionar que JSON es más ligero que el formato XML al ocupar menos espacio y representar mejor las estructuras de los datos.

Ejemplos para contrastar XML i JSON:

el siguiente fragmento en XML:

<date value=”1972-11-30″/>
<deceased value=”false”/>
<count value=”23″/>

está representado en JSON como:

“date” : { value: “1972-11-30” }
“deceased” : { value: false }
“count” : { value: 23 }

Todos los elementos XML pueden tener un atributo ‘id’, que se representa en JSON como una propiedad de nombre “_id”:

el siguiente fragmento en XML:

<dob id=”314159″ value=”1972-11-30″/>

está representado en JSON como:

“dob”: {
“_id”: “314159”,
“value”: “1972-11-30”
}

Repetició d’elements:

Los elementos repetidos se unen dentro de un vector JSON con el nombre del elemento, de manera que si un elemento <dob> se repite en XML, en JSON queda dentro de un vector.

el siguiente fragmento en XML:

<dob value=”2011-11-30″/>
<dob id=”314159″ value=”1972-11-30″/>

está representado en JSON de la siguiente manera:

“dob”: [
{“value”: “2011-11-30”},
{“_id”: “314159”, “value”: “1972-11-30”}
]

 

Nestor González Vila

Publicat per Nestor González Vila

Estudiant Grau en Enginyeria Informàtica, treballo al CCI-TCM actualment en la línia d’entorns d’interoperabilitat.

Una resposta per Introducció a JSON

  1. Pingback: FHIR, la nova especificació HL7 (Part III) | El Bloc del Centre de Competències d'Integració

Deixa un comentari

L'adreça electrònica no es publicarà Els camps necessaris estan marcats amb *