dimarts, 12 d’abril del 2016

JSON

JSON és un format lleuger d'intercanvi de dades que des de fa algun temps ha començat a usar-se d'una forma tan popular com es ús en el seu temps l'XML. 

JSON és l'abreujament de JavaScript Object Notació - Notació d'Objectes de JavaScript - També és subconjunt de l'estàndard ECMA 262 publicat el desembre de 1999. El format de JSON és àmpliament reconegut per una gran varietat de llenguatges com Java, PHP, JavaScript, C ++, C # entre d'altres, la llista completa es pot consultar des del lloc web de JSON


S'usa en molts sistemes que requereixen mostrar o enviar informació per a ser interpretada per altres sistemes, l'avantatge de JSON en ser un format que és independent de qualsevol llenguatge de programació, és que els serveis que comparteixen informació per aquest mètode, no necessiten parlar el mateix idioma, és a dir, l'emissor pot ser Java i el receptor PHP, cada llenguatge té la seva pròpia llibreria per codificar i descodificar cadenes de JSON.



Per a molts, és el company perfecte de Ajax. Igual que XML, serveix per modelar i presentar dades, així que es pot combinar amb tot tipus d'aplicacions com lectors RSS, Ginys de WordPress, Mods de Joomla, Gadgets i Badges en diferents aplicacions i servidors.


La seva estructura està constituït per dues estructures perfectament vàlides en qualsevol llenguatge de programació:
  1. Una col·lecció de parells nom / valor
  2. Una llista ordenada de valors
El primer element de JSON és l'objecte o object, aquest es conforma d'una clau d'obertura, el nom de l'objecte entre cometes, dos punts, el valor donat a l'objecte i una clau de tanca, que il·lustra com segueix


{"Objecte":valor}

El que significa que podem construir objectes molt bàsics com el del següent exemple

{"Nom":"Joan"}

Tipus de dades:

El valor pot prendre qualsevol dels següents tipus de dades:

  • String (Cadenes de text)
  • number (nombres)
  • object (Objectes)
  • char (caràcters unicode vàlids)
  • array (Un arranjament o col·lecció de valors)
  • null (nul)
  • boolean (valors true o ​​false)
La forma més simple de mostrar dades és a través d'un arranjament, l'arranjament comença amb un claudàtor d'inici ([) i acaba amb un claudàtor  de final (]) i es tracta d'una col·lecció de parells nom / valor separats per comes, com s'il·lustra a continuació.

"Array": [{llista de parells nom / valor}]


Veiem un exemple:


//Exemple JSON per un objecte de tipus persona
{
"nombre":"Lina Camprubi",
"edad":27,
"nacionalidad":"Catalana",
"altura":"156 cm",
"peso":60
}

Si afegim un array de dades :



//Exemple JSON per un objecte de tipus persona
{
"nombre":"Lina Camprubi",
"edad":27,
"nacionalidad":"Catalana",
"altura":"156 cm",
"peso":60,
"hobbies": :["Sports","Reading","Ski","Running","Cooking"]
}

També podem afegir un sub-fill:


{
"nombre":"Lina Camprubi",
"edad":27,
"nacionalidad":"Catalana",
"altura":"156 cm",
"peso":60,
"hobbies": ["Sports","Reading","Ski","Running","Cooking"],



"direccion":{
    "calle":"Carrer",
    "numero":"123",
    "pais":"Catalunya"
    }

}


O afegir més persones :

afegim el contenidor {personas: { "persona": [  { "cada persona" }, { "una altre persona"]} } }

{"personas":{ "persona": [ { "nombre": "Lina Camprubi", "edad": 27, "nacionalidad": "Catalana", "altura": "156 cm", "peso": 60, "hobbies": ["Sports", "Reading", "Ski", "Running", "Cooking"], "direccion": { "calle": "Carrer", "numero": "123", "pais": "Catalunya" } }, { "nombre": "Una altra persona", "edad": 27, "nacionalidad": "Catalana", "altura": "176 cm", "peso": 70, "hobbies": ["Sports", "Reading", "Ski", "Running", "Cooking"], "direccion": { "calle": "Carrer", "numero": "123", "pais": "Catalunya" } } ] }
}

Podem validar amb un validador de json : http://jsonlint.com/

I podem transformar a un XML: http://codebeautify.org/jsontoxml

<?xml version="1.0" encoding="UTF-8" ?>
<personas>
<persona>
<nombre>Lina Camprubi</nombre>
<edad>27</edad>
<nacionalidad>Catalana</nacionalidad>
<altura>156 cm</altura>
<peso>60</peso>
<hobbies>Sports</hobbies>
<hobbies>Reading</hobbies>
<hobbies>Ski</hobbies>
<hobbies>Running</hobbies>
<hobbies>Cooking</hobbies>
<direccion>
<calle>Carrer</calle>
<numero>123</numero>
<pais>Catalunya</pais>
</direccion>
</persona>
<persona>
<nombre>Una altra persona</nombre>
<edad>27</edad>
<nacionalidad>Catalana</nacionalidad>
<altura>176 cm</altura>
<peso>70</peso>
<hobbies>Sports</hobbies>
<hobbies>Reading</hobbies>
<hobbies>Ski</hobbies>
<hobbies>Running</hobbies>
<hobbies>Cooking</hobbies>
<direccion>
<calle>Carrer</calle>
<numero>123</numero>
<pais>Catalunya</pais>
</direccion>
</persona>
</personas>


Més exemples:


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

 <menu id="file" value="File">
    <popup>
      <menuitem value="New" onclick="CreateNewDoc()" />
      <menuitem value="Open" onclick="OpenDoc()" />
      <menuitem value="Close" onclick="CloseDoc()" />
    </popup>
  </menu>

Així doncs per escriure JSON hem de tenir en compte:

  • La creació dels objectes JSON implica escriure dades, per a això:
  • Les dades estan separats per comes.
  • Les dades s'escriguin en parells, sent primer el nom o atribut del mateix i després el valor de la dada.
  • Els objectes JSON estan envoltats per claus "{}"
  • Claus quadrades [] guarden arranjaments (arrays), incloent altres objectes JSON

Cap comentari:

Publica un comentari a l'entrada