<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
		<id>http://wikiserver.infomerce.es/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amoncusi2</id>
		<title>wikiserver - Contribucions de l’usuari [ca]</title>
		<link rel="self" type="application/atom+xml" href="http://wikiserver.infomerce.es/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Amoncusi2"/>
		<link rel="alternate" type="text/html" href="http://wikiserver.infomerce.es/index.php/Especial:Contribucions/Amoncusi2"/>
		<updated>2026-05-29T19:11:39Z</updated>
		<subtitle>Contribucions de l’usuari</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>http://wikiserver.infomerce.es/index.php?title=NF1_-_WEBSOCKETS&amp;diff=17981</id>
		<title>NF1 - WEBSOCKETS</title>
		<link rel="alternate" type="text/html" href="http://wikiserver.infomerce.es/index.php?title=NF1_-_WEBSOCKETS&amp;diff=17981"/>
				<updated>2024-04-26T17:04:49Z</updated>
		
		<summary type="html">&lt;p&gt;Amoncusi2: /* ENVIAR MENSAJE AL CLIENTE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==WEBSOCKETS==&lt;br /&gt;
&lt;br /&gt;
'''VIDEOTUTORIAL:''' https://youtu.be/B1C_xNehrk8&lt;br /&gt;
&lt;br /&gt;
'''Introducción'''&lt;br /&gt;
&lt;br /&gt;
Los websockets son una tecnología que permite una comunicación bidireccional entre cliente y servidor sobre un ''único socket TCP''. En cierta manera es un buen sustituto de AJAX como tecnología para obtener datos del servidor, ya que no tenemos que pedirlos, ''el servidor nos los enviará cuando haya nuevos''.&lt;br /&gt;
Podemos utilizar diferentes bibliotecas para utilizar esta tecnología con [https://developer.mozilla.org/es/docs/WebSockets-840092-dup/Writing_WebSocket_client_applications#Disponibilidad_de_WebSockets websocket] (ws) más básica y la que vamos a trabajar que es algo más completa [https://socket.io sockets.io].&lt;br /&gt;
&lt;br /&gt;
[[Fitxer:websockets.png|600px]]&lt;br /&gt;
-------------------&lt;br /&gt;
-------------------&lt;br /&gt;
[[Fitxer:ajaxvswebsocket.png|600px]]&lt;br /&gt;
-------------------&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
[[Fitxer:ajaxvswebsocket1.png|600px]]&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/10112178/differences-between-socket-io-and-websockets/38558531#38558531&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet&lt;br /&gt;
&lt;br /&gt;
Si queremos montar nuestro servidor en windows primero debemos instalar Nodejs que es el servidor que vamos a instalar, nos creamos una carpeta y hacemos la instalación del framework Express y nuestra biblioteca socket.io dentro de esa ruta, por ejemplo, C:\Users\pc\websocket2.&lt;br /&gt;
&lt;br /&gt;
Empezamos creando un paquete de Node con &amp;quot;npm init -y&amp;quot; para generar un package.json con las opciones por defecto ( luego instalamos express y socket.io)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ npm init -y&lt;br /&gt;
$ npm install --save express&lt;br /&gt;
$ npm install --save socket.io&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
después abrimos consola de windows, accedemos a la carpeta y añadimos el server.js y index.html&lt;br /&gt;
&lt;br /&gt;
==RECIBIR MENSAJE EL CLIENTE==&lt;br /&gt;
&lt;br /&gt;
nos creamos un archivo dentro de la carpeta websocket llamado 'server.js' que será nuestro código en el servidor e introducimos:&lt;br /&gt;
&lt;br /&gt;
'''CLIENTE'''&lt;br /&gt;
&lt;br /&gt;
por parte del cliente tendremos que introducir el siguiente código&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./node_modules/socket.io/client-dist/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- debe ser la ruta en la cual está instalado nuestra biblioteca socket.io--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
//conectamos el cliente con el servidor de websockets que tenemos en http://localhost:8080 &lt;br /&gt;
// y escuchamos el evento mensajes y obteniendo el array en data.&lt;br /&gt;
var socket = io.connect('http://localhost:8080', { 'forceNew': true });&lt;br /&gt;
// var socket = io.connect('http://localhost');&lt;br /&gt;
&lt;br /&gt;
socket.on('mensajes', function(data) {&lt;br /&gt;
        document.write(&amp;quot;Bienvenidos.digo&amp;quot;);&lt;br /&gt;
  console.log(data);  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;Hello world&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SERVIDOR''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;nodejs&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
var path = require('path');&lt;br /&gt;
var server = require('http').Server(app);&lt;br /&gt;
var io = require('socket.io')(server);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
app.use(express.static(path.join(__dirname, '/'))); //Para el servicio de archivos estáticos como, por ejemplo, imágenes, archivos CSS y archivos JavaScript,&lt;br /&gt;
&lt;br /&gt;
server.listen(8080, function() {   ////Pondremos el servidor a escuchar en localhost con el puerto 8080&lt;br /&gt;
  console.log('Servidor corriendo en http://localhost:8080');&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// array de mensajes&lt;br /&gt;
var mensajes= [{&lt;br /&gt;
    profesor: &amp;quot;Julio&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Hola! ¿Cómo estáis?&amp;quot;&lt;br /&gt;
},{&lt;br /&gt;
    profesor: &amp;quot;Alumno1&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Muy bien! ¿y tú?&amp;quot;&lt;br /&gt;
},{&lt;br /&gt;
    profesor: &amp;quot;Alumno1&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Perfecto!&amp;quot;&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//servidor de websockets, que lo tenemos en la variable io, esté atento a que se realice una conexión. Eso lo logramos con io.on() y pasándole el mensaje connection, también tenemos el método en el cual enviaremos el array de objetos mensaje con el evento 'mensajes'&lt;br /&gt;
&lt;br /&gt;
io.on('connection', function(socket) {&lt;br /&gt;
  console.log('Un cliente se ha conectado');&lt;br /&gt;
        socket.emit('mensajes', mensajes);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cuando ya tengamos nuestro fichero 'server.js' en terminal escribimos 'node server.js'&lt;br /&gt;
&lt;br /&gt;
==ENVIAR MENSAJE AL CLIENTE==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;./node_modules/socket.io/client-dist/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- debe ser la ruta en la cual está instalado nuestra biblioteca socket.io--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
//conectamos el cliente con el servidor de websockets que tenemos en http://localhost:8080 &lt;br /&gt;
// y escuchamos el evento mensajes y obteniendo el array en data.&lt;br /&gt;
var socket = io.connect('http://localhost:8080', { 'forceNew': true });&lt;br /&gt;
// var socket = io.connect('http://localhost');&lt;br /&gt;
&lt;br /&gt;
socket.on('mensa', function(data) {&lt;br /&gt;
        document.write(&amp;quot;Bienvenidos.digo&amp;quot;);&lt;br /&gt;
  console.log(data);  &lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
var MensajeCliente= [{&lt;br /&gt;
    alumno: &amp;quot;alumno1&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Estoy en el cliente&amp;quot;&lt;br /&gt;
},{&lt;br /&gt;
    alumno: &amp;quot;alumno1&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;yo también lo estoy&amp;quot;&lt;br /&gt;
},{&lt;br /&gt;
    alumno: &amp;quot;alumno1&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Perfecto!&amp;quot;&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
socket.emit('mensajes', MensajeCliente);  //envía al servidor el JSON 'MensajeCliente' y escuchará en el evento 'mensajes'&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;Hello world&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''server.js'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var express = require('express');&lt;br /&gt;
var app = express();&lt;br /&gt;
var path = require('path');&lt;br /&gt;
var server = require('http').Server(app);&lt;br /&gt;
var io = require('socket.io')(server);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
app.use(express.static(path.join(__dirname, '/'))); //Para el servicio de archivos estáticos como, por ejemplo, imágenes, archivos CSS y archivos JavaScript,&lt;br /&gt;
&lt;br /&gt;
server.listen(8080, function() {   ////Pondremos el servidor a escuchar en localhost con el puerto 8080&lt;br /&gt;
  console.log('Servidor corriendo en http://localhost:8080');&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// array de mensajes&lt;br /&gt;
var MensajeServidor= [{&lt;br /&gt;
    profesor: &amp;quot;Julio&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Hola! estoy en el servidor&amp;quot;&lt;br /&gt;
},{&lt;br /&gt;
    profesor: &amp;quot;Albert&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;¿Qué haces por ahí?&amp;quot;&lt;br /&gt;
},{&lt;br /&gt;
    profesor: &amp;quot;Alex&amp;quot;,&lt;br /&gt;
    texto: &amp;quot;Dando una vuelta me imagino!&amp;quot;&lt;br /&gt;
}];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//servidor de websockets, que lo tenemos en la variable io, esté atento a que se realice una conexión. &lt;br /&gt;
//Eso lo logramos con io.on() y pasándole el mensaje connection, también tenemos el método en el cual enviaremos el array de objetos mensaje con el evento 'mensajes'&lt;br /&gt;
&lt;br /&gt;
io.on('connection', function(socket) {&lt;br /&gt;
        console.log('Un cliente se ha conectado');&lt;br /&gt;
        socket.emit('mensa', MensajeServidor);  //envia al cliente el array Mensajeservidor al cliente que escuchará con el evento 'mensa'&lt;br /&gt;
        socket.on('mensajes', function(data) {  //está escuchando del cliente si le ha enviado algo mediante el evento 'mensajes'&lt;br /&gt;
        console.log(data);  &lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://manuais.iessanclemente.net/index.php/Node.js_y_Websockets#Servidor_web_b.C3.A1sico_con_node.js_y_express&lt;br /&gt;
&lt;br /&gt;
http://micaminomaster.com.co/herramientas-desarrollo/nodejs-projecto-esqueleto-mvc-crud/&lt;br /&gt;
&lt;br /&gt;
https://carlosazaustre.es/websockets-como-utilizar-socket-io-en-tu-aplicacion-web&lt;br /&gt;
&lt;br /&gt;
==EJERCICIOS==&lt;br /&gt;
&lt;br /&gt;
*Se desea enviar desde el servidor un JSON con la fecha actual cada segundo al cliente &amp;quot;new Date().toJSON()&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:[[sol_websockets_reloj]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Se desea enviar desde el cliente un número al servidor que será el tiempo X que hará ejecutar un función mediante setInterval que genera números aleatorios, deberá mostrarlo por consola en el servidor y mostrarlo al cliente.&lt;br /&gt;
&lt;br /&gt;
:[[sol_websockets_random]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Mostrará por pantalla el número de personas que están conectadas en ese momento y en caso de desconectarse deberá actualizarse la información.&lt;br /&gt;
&lt;br /&gt;
:[[sol_websockets_clientes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Se desea realizar un chat en el cual diferentes clientes se conectan al servidor y van viendo el historial de mensajes en pantalla.El cliente deberá tener dos inputs para introducir información, uno para el nombre y otro para el texto.&lt;br /&gt;
&lt;br /&gt;
:[[sol_websockets_chat]]&lt;/div&gt;</summary>
		<author><name>Amoncusi2</name></author>	</entry>

	<entry>
		<id>http://wikiserver.infomerce.es/index.php?title=NF3_-_XML_i_JSON&amp;diff=17953</id>
		<title>NF3 - XML i JSON</title>
		<link rel="alternate" type="text/html" href="http://wikiserver.infomerce.es/index.php?title=NF3_-_XML_i_JSON&amp;diff=17953"/>
				<updated>2024-04-12T17:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;Amoncusi2: /* Traduïr un XML a JSON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON =&lt;br /&gt;
JSON (JavaScript Object Notation) és un format d'intercanvi de dades lleuger. És fàcil per als éssers humans a llegir i escriure. És fàcil per a les màquines per analitzar i generar. Es basa en un subconjunt del llenguatge de programació JavaScript, estàndard ECMA-262 3rd Edition -. Desembre 1999 JSON és un format de text que és completament independent del llenguatge però utilitza convencions que són familiars per als programadors de la C-família de llenguatges, incloent C , C + +, C #, Java, JavaScript, Perl, Python, i molts altres. Aquestes propietats fan de JSON un llenguatge ideal-l'intercanvi de dades.&lt;br /&gt;
JSON es basa en dues estructures: &lt;br /&gt;
&lt;br /&gt;
*Una col·lecció de parells nom / valor. En diversos idiomes, això es realitza com un objecte, fitxa, estructura, diccionari, taula hash, llista amb clau, o una matriu associativa. &lt;br /&gt;
*Una llista ordenada de valors. En la majoria dels idiomes, això es realitza en forma de matriu, vector, llista o seqüència. &lt;br /&gt;
Es tracta d'estructures de dades universals. Pràcticament tots els llenguatges de programació moderns els donen suport d'una manera o altra. Té sentit que un format de dades que és intercanviable amb els llenguatges de programació també es basarà en aquestes estructures.&lt;br /&gt;
&lt;br /&gt;
Com que utilitza la sintaxi de JSON amb JavaScript sense necessitat de programari addicional que es necessita per treballar amb JSON en JavaScript. &lt;br /&gt;
&lt;br /&gt;
Exemples de Json&lt;br /&gt;
&lt;br /&gt;
El principi bàsic és amb parells atribut-valor, aquests han d'estar tancats entre claus {,} que és el que defineixen l'inici i la fi de l'objecte.&lt;br /&gt;
&lt;br /&gt;
== Parell Nom/Valor ==&lt;br /&gt;
Generador JSON https://www.json-generator.com/&lt;br /&gt;
&lt;br /&gt;
Les dades en format JSON està escrit en forma de parells nom / valor. &lt;br /&gt;
&lt;br /&gt;
Un parell de nom / valor consisteix en un nom de camp (entre cometes), seguit de dos punts, seguit d'un valor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;firstName&amp;quot; : &amp;quot;John&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Això és fàcil d'entendre, i és igual a la instrucció de JavaScript:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firstName = &amp;quot;John&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valors Json:&lt;br /&gt;
&lt;br /&gt;
*Un nombre (sencer o punt flotant) &lt;br /&gt;
*Una cadena (entre cometes) &lt;br /&gt;
*Booleà (cert o fals) &lt;br /&gt;
*Un conjunt (entre claudàtors) &lt;br /&gt;
*Un objecte (entre claus) &lt;br /&gt;
*nul&lt;br /&gt;
&lt;br /&gt;
==JSON Objects==&lt;br /&gt;
Objectes JSON s'escriuen entre claus, &lt;br /&gt;
&lt;br /&gt;
Els objectes poden contenir diversos parells de noms / valors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;firstName&amp;quot;: &amp;quot;John&amp;quot;,&lt;br /&gt;
  &amp;quot;lastName&amp;quot;: &amp;quot;Doe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Això també és fàcil d'entendre, i és igual a les sentències de JavaScript:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
firstName = &amp;quot;John&amp;quot;;&lt;br /&gt;
lastName = &amp;quot;Doe&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JSON Array==&lt;br /&gt;
Arrays JSON s'escriuen entre claudàtors. &lt;br /&gt;
&lt;br /&gt;
Una matriu pot contenir diversos objectes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;profes&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Julio&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Noguera&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Albert&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Canela&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Alex&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Salinas&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En l'exemple anterior, l'objecte &amp;quot;empleats&amp;quot; és una matriu que conté tres objectes. Cada objecte és un registre d'una persona (amb un nom i un cognom).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
var profes=[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;firstName&amp;quot;: &amp;quot;Julio&amp;quot;,&lt;br /&gt;
    &amp;quot;lastName&amp;quot;: &amp;quot;Noguera&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;firstName&amp;quot;: &amp;quot;Albert&amp;quot;,&lt;br /&gt;
    &amp;quot;lastName&amp;quot;: &amp;quot;Canela&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;firstName&amp;quot;: &amp;quot;Alex&amp;quot;,&lt;br /&gt;
    &amp;quot;lastName&amp;quot;: &amp;quot;Salinas&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
profes[0].firstName + &amp;quot; &amp;quot; + profes[0].lastName;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-------------------&lt;br /&gt;
'''EXEMPLES'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
//Ejemplo de JSON para un objeto tipo Persona&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;nombre&amp;quot;:&amp;quot;Julio Noguera&amp;quot;,&lt;br /&gt;
&amp;quot;edad&amp;quot;:30,&lt;br /&gt;
&amp;quot;nacionalidad&amp;quot;:&amp;quot;Española&amp;quot;,&lt;br /&gt;
&amp;quot;altura&amp;quot;:&amp;quot;182 cm&amp;quot;,&lt;br /&gt;
&amp;quot;peso&amp;quot;:75&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Json amb booleans, nombre, cadenes i un objecte direcció&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;nombre&amp;quot;:&amp;quot;Fulano Probencio&amp;quot;,&lt;br /&gt;
&amp;quot;edad&amp;quot;:27,&lt;br /&gt;
&amp;quot;nacionalidad&amp;quot;:&amp;quot;Chileno&amp;quot;,&lt;br /&gt;
&amp;quot;altura&amp;quot;:&amp;quot;172 cm&amp;quot;,&lt;br /&gt;
&amp;quot;peso&amp;quot;:75,&lt;br /&gt;
&amp;quot;pasatiempos&amp;quot;:[&amp;quot;Polo&amp;quot;,&amp;quot;Cricket&amp;quot;,&amp;quot;Ski&amp;quot;,&amp;quot;Drafting&amp;quot;,&amp;quot;Gaming&amp;quot;],&lt;br /&gt;
&amp;quot;soltero&amp;quot;:true,&lt;br /&gt;
&amp;quot;direccion&amp;quot;:{&lt;br /&gt;
    &amp;quot;calle&amp;quot;:&amp;quot;Ave. Siempre Viva&amp;quot;,&lt;br /&gt;
    &amp;quot;numero&amp;quot;:&amp;quot;123&amp;quot;,&lt;br /&gt;
    &amp;quot;pais&amp;quot;:&amp;quot;México&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un array de objectes persona.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;personas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;nombre&amp;quot;: &amp;quot;Julio Noguera&amp;quot;,&lt;br /&gt;
            &amp;quot;edad&amp;quot;: 30,&lt;br /&gt;
            &amp;quot;nacionalidad&amp;quot;: &amp;quot;Española&amp;quot;,&lt;br /&gt;
            &amp;quot;altura&amp;quot;: &amp;quot;182 cm&amp;quot;,&lt;br /&gt;
            &amp;quot;peso&amp;quot;: 75,&lt;br /&gt;
            &amp;quot;pasatiempos&amp;quot;: [&lt;br /&gt;
                &amp;quot;Polo&amp;quot;,&lt;br /&gt;
                &amp;quot;Cricket&amp;quot;,&lt;br /&gt;
                &amp;quot;Ski&amp;quot;,&lt;br /&gt;
                &amp;quot;Drafting&amp;quot;,&lt;br /&gt;
                &amp;quot;Gaming&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;soltero&amp;quot;: true,&lt;br /&gt;
            &amp;quot;direccion&amp;quot;: {&lt;br /&gt;
                &amp;quot;calle&amp;quot;: &amp;quot;Ave. Siempre Viva&amp;quot;,&lt;br /&gt;
                &amp;quot;numero&amp;quot;: &amp;quot;123&amp;quot;,&lt;br /&gt;
                &amp;quot;pais&amp;quot;: &amp;quot;España&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;nombre&amp;quot;: &amp;quot;Ramón&amp;quot;,&lt;br /&gt;
            &amp;quot;edad&amp;quot;: 22,&lt;br /&gt;
            &amp;quot;nacionalidad&amp;quot;: &amp;quot;Catalana&amp;quot;,&lt;br /&gt;
            &amp;quot;altura&amp;quot;: &amp;quot;178 cm&amp;quot;,&lt;br /&gt;
            &amp;quot;peso&amp;quot;: 72,&lt;br /&gt;
            &amp;quot;pasatiempos&amp;quot;: [&lt;br /&gt;
                &amp;quot;Pintar&amp;quot;,&lt;br /&gt;
                &amp;quot;Programar&amp;quot;,&lt;br /&gt;
                &amp;quot;Scuba Diving&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;soltero&amp;quot;: true,&lt;br /&gt;
            &amp;quot;direccion&amp;quot;: {&lt;br /&gt;
                &amp;quot;calle&amp;quot;: &amp;quot;Ave. Siempre Viva&amp;quot;,&lt;br /&gt;
                &amp;quot;numero&amp;quot;: &amp;quot;123&amp;quot;,&lt;br /&gt;
                &amp;quot;pais&amp;quot;: &amp;quot;Catalana&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;nombre&amp;quot;: &amp;quot;Amiga Pepita&amp;quot;,&lt;br /&gt;
            &amp;quot;edad&amp;quot;: 25,&lt;br /&gt;
            &amp;quot;nacionalidad&amp;quot;: &amp;quot;Cubana&amp;quot;,&lt;br /&gt;
            &amp;quot;altura&amp;quot;: &amp;quot;167 cm&amp;quot;,&lt;br /&gt;
            &amp;quot;peso&amp;quot;: 55,&lt;br /&gt;
            &amp;quot;pasatiempos&amp;quot;: [&lt;br /&gt;
                &amp;quot;Natación&amp;quot;,&lt;br /&gt;
                &amp;quot;Alpinismo&amp;quot;,&lt;br /&gt;
                &amp;quot;Cinéfila&amp;quot;,&lt;br /&gt;
                &amp;quot;Socializar&amp;quot;,&lt;br /&gt;
                &amp;quot;Gaming&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;soltero&amp;quot;: true,&lt;br /&gt;
            &amp;quot;direccion&amp;quot;: {&lt;br /&gt;
                &amp;quot;calle&amp;quot;: &amp;quot;Cerro del Estudiante&amp;quot;,&lt;br /&gt;
                &amp;quot;numero&amp;quot;: &amp;quot;456&amp;quot;,&lt;br /&gt;
                &amp;quot;pais&amp;quot;: &amp;quot;Argentina&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
Exemple 1 :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;employees&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Julio&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Noguera&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Albert&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Canela&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Alex&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Salinas&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Exemple 2 :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
var JSONObject={&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;John Johnson&amp;quot;,&lt;br /&gt;
  &amp;quot;street&amp;quot;: &amp;quot;Oslo West 555&amp;quot;,&lt;br /&gt;
  &amp;quot;age&amp;quot;: 33,&lt;br /&gt;
  &amp;quot;phone&amp;quot;: &amp;quot;555 1234567&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&amp;quot;jname&amp;quot;).innerHTML=JSONObject.name;&lt;br /&gt;
document.getElementById(&amp;quot;jage&amp;quot;).innerHTML=JSONObject.age;&lt;br /&gt;
document.getElementById(&amp;quot;jstreet&amp;quot;).innerHTML=JSONObject.street;&lt;br /&gt;
document.getElementById(&amp;quot;jphone&amp;quot;).innerHTML=JSONObject.phone;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Validadors de json'''&lt;br /&gt;
&lt;br /&gt;
http://jsonviewer.stack.hu/&lt;br /&gt;
&lt;br /&gt;
http://jsonlint.com/&lt;br /&gt;
&lt;br /&gt;
==La conversió d'un text JSON a un objecte JavaScript==&lt;br /&gt;
&lt;br /&gt;
'''NO RECOMENDADO'''&lt;br /&gt;
&lt;br /&gt;
http://www.etnassoft.com/2011/01/05/javascript-eval-uso-y-alternativas/&lt;br /&gt;
&lt;br /&gt;
Crear una cadena de JavaScript que conté la sintaxi de JSON:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
var txt = '{ &amp;quot;employees&amp;quot; : [' +&lt;br /&gt;
'{ &amp;quot;firstName&amp;quot;:&amp;quot;John&amp;quot; , &amp;quot;lastName&amp;quot;:&amp;quot;Doe&amp;quot; },' +&lt;br /&gt;
'{ &amp;quot;firstName&amp;quot;:&amp;quot;Anna&amp;quot; , &amp;quot;lastName&amp;quot;:&amp;quot;Smith&amp;quot; },' +&lt;br /&gt;
'{ &amp;quot;firstName&amp;quot;:&amp;quot;Peter&amp;quot; , &amp;quot;lastName&amp;quot;:&amp;quot;Jones&amp;quot; } ]}';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sintaxi JSON és un subconjunt de la sintaxi de JavaScript, la funció eval () de JavaScript es pot utilitzar per convertir un text JSON en un objecte de JavaScript. &lt;br /&gt;
&lt;br /&gt;
La funció eval () utilitza el compilador de JavaScript que analitzar el text JSON i produeix un objecte de JavaScript. El text ha de ser embolicat amb parèntesi per evitar un error de sintaxi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
var obj = eval (&amp;quot;(&amp;quot; + txt + &amp;quot;)&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
First Name: &amp;lt;span id=&amp;quot;fname&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
Last Name: &amp;lt;span id=&amp;quot;lname&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
document.getElementById(&amp;quot;fname&amp;quot;).innerHTML = obj.employees[1].firstName;&lt;br /&gt;
document.getElementById(&amp;quot;lname&amp;quot;).innerHTML = obj.employees[1].lastName; &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
És més segur utilitzar un analitzador JSON per a convertir un text JSON en un objecte de JavaScript. Un analitzador JSON reconeixerà només text JSON i no compilar scripts. &lt;br /&gt;
&lt;br /&gt;
En els navegadors que donen suport JSON natiu, analitzadors JSON són també més ràpid. &lt;br /&gt;
&lt;br /&gt;
Suport JSON nadiu està inclòs en tots els principals navegadors i en l'últim estàndard ECMAScript (JavaScript).&lt;br /&gt;
&lt;br /&gt;
== JAVASCRIPT &amp;amp; JSON ==&lt;br /&gt;
&lt;br /&gt;
=== Analitzar text JSON i convertir-lo en un objecte (JAVASCRIPT)===&lt;br /&gt;
*Es pot fer amb la llibreria nativa de JSON per javascript (Javascript)&lt;br /&gt;
*la llibreria tracta una cadena de text i el transforma com a objecte JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var myObject = JSON.parse('{ &amp;quot;name&amp;quot;: &amp;quot;John&amp;quot; }');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
https://www.w3schools.com/js/js_json_parse.asp&lt;br /&gt;
&lt;br /&gt;
=== Donat un objecte JSON converti-lo en Text ===&lt;br /&gt;
&lt;br /&gt;
* Transforma tot el contingut de un objecte Json a string&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var myJSONText = JSON.stringify(myObject);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Més informació a https://www.w3schools.com/js/js_json_stringify.asp&lt;br /&gt;
&lt;br /&gt;
== PHP &amp;amp; JSON ==&lt;br /&gt;
A PHP s'utilitzen dos funcions per manipular JSON: json_encode i json_decode. A la següent Web trobareu com utilitzar-les: http://www.php.net/manual/es/function.json-decode.php&lt;br /&gt;
&lt;br /&gt;
'''LLegir i escriure  Fitxer desde PHP '''&lt;br /&gt;
&lt;br /&gt;
Si volem llegir un fitxer .json haurem d'utilitzar la instrucció &amp;quot;file_get_contents&amp;quot;. Les dades que obtinguis d'aquesta funció, els hauràs de guardar en una variable qualsevol&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$ json = file_get_contents (&amp;quot;./datos.json&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Guarda información dentro de un fichero, en este caso un JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$json_string1 = {&amp;quot;posicionX&amp;quot;:250,&amp;quot;posicionY&amp;quot;:100}&lt;br /&gt;
file_put_contents('./datos.json', $json_string1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crear un JSON desde PHP (json_encode)'''&lt;br /&gt;
&lt;br /&gt;
Creem un objecte Json a partir de un array en PHP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$miArray = array(&amp;quot;manzana&amp;quot;=&amp;gt;&amp;quot;verde&amp;quot;, &amp;quot;uva&amp;quot;=&amp;gt;&amp;quot;Morada&amp;quot;, &amp;quot;fresa&amp;quot;=&amp;gt;&amp;quot;roja&amp;quot;);&lt;br /&gt;
print_r(json_encode($miArray));&lt;br /&gt;
&lt;br /&gt;
//resultat que mostrar  {&amp;quot;manzana&amp;quot;:&amp;quot;verde&amp;quot;,&amp;quot;uva&amp;quot;:&amp;quot;Morada&amp;quot;,&amp;quot;fresa&amp;quot;:&amp;quot;roja&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crear un objeto en PHP con JSON (json_decode)'''&lt;br /&gt;
&lt;br /&gt;
Tenim un objecte Json y el transformen a un array de PHP&lt;br /&gt;
exemple 1 un json simple.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$jsonData = '{ &amp;quot;usuario&amp;quot;:&amp;quot;Julio&amp;quot;, &amp;quot;edad&amp;quot;:30, &amp;quot;comunidad&amp;quot;:&amp;quot;catalunya&amp;quot; }';&lt;br /&gt;
&lt;br /&gt;
$phpArray = json_decode($jsonData);&lt;br /&gt;
&lt;br /&gt;
//print_r($phpArray);&lt;br /&gt;
//stdClass Object ( [usuario] =&amp;gt; Julio [edad] =&amp;gt; 30 [comunidad] =&amp;gt; catalunya ) &lt;br /&gt;
&lt;br /&gt;
//en el cas de volver recorrer l'array mostraría la clau i el valor&lt;br /&gt;
foreach ($phpArray as $key =&amp;gt; $value) { &lt;br /&gt;
    echo &amp;quot;&amp;lt;p&amp;gt;$key | $value&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Altre exemple&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$jsonData = '[{ &amp;quot;usuario&amp;quot;:&amp;quot;Julio&amp;quot;, &amp;quot;edad&amp;quot;:30, &amp;quot;comunidad&amp;quot;:&amp;quot;catalunya&amp;quot; },{ &amp;quot;usuario&amp;quot;:&amp;quot;pepe&amp;quot;, &amp;quot;edad&amp;quot;:28, &amp;quot;comunidad&amp;quot;:&amp;quot;valencia&amp;quot; },{ &amp;quot;usuario&amp;quot;:&amp;quot;pep&amp;quot;, &amp;quot;edad&amp;quot;:23, &amp;quot;comunidad&amp;quot;:&amp;quot;murcia&amp;quot; }]';&lt;br /&gt;
$phpArray = json_decode($jsonData);&lt;br /&gt;
&lt;br /&gt;
//print_r($phpArray);&lt;br /&gt;
/*Array ( [0] =&amp;gt; stdClass Object ( [usuario] =&amp;gt; Julio [edad] =&amp;gt; 30 [comunidad] =&amp;gt; catalunya ) [1] =&amp;gt; stdClass Object ( [usuario] =&amp;gt; pepe [edad] =&amp;gt; 28 [comunidad] =&amp;gt; valencia ) [2] =&amp;gt; stdClass Object ( [usuario] =&amp;gt; pep [edad] =&amp;gt; 23 [comunidad] =&amp;gt; murcia ) ) Julio 30 catalunya pepe 28 valencia pep 23 murcia */&lt;br /&gt;
&lt;br /&gt;
//recorrer un array i mostrar les dades.&lt;br /&gt;
foreach($phpArray as $obj){&lt;br /&gt;
        $id_usuario = $obj-&amp;gt;usuario;&lt;br /&gt;
        $edad = $obj-&amp;gt;edad;&lt;br /&gt;
        $comunidad = $obj-&amp;gt;comunidad;&lt;br /&gt;
        echo $id_usuario.&amp;quot; &amp;quot;.$edad.&amp;quot; &amp;quot;.$comunidad;&lt;br /&gt;
        echo &amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//també podem accedir al contingut de la seguüent manera echo &amp;quot;$phparray[0]-&amp;gt;usuario&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== jQuery &amp;amp; JSON ==&lt;br /&gt;
=== Analitzar text JSON i convertir-lo en un objecte (JQUERY)===&lt;br /&gt;
* Es pot fer amb la funció Jquery.parse(): rep una cadena JSON ben formatada i retorna l'objecte JavaScript resultant. (JQuery)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var obj = jQuery.parseJSON( '{ &amp;quot;name&amp;quot;: &amp;quot;John&amp;quot; }' );&lt;br /&gt;
alert( obj.name === &amp;quot;John&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
https://api.jquery.com/jQuery.parseJSON/&lt;br /&gt;
&lt;br /&gt;
=== LLegir dades des de un fitxer JSON (JQUERY)===&lt;br /&gt;
Supossem que tenim un fitxer anonenat dades.json i el volem llegir amb Javascript.&lt;br /&gt;
Fitxer dades.json :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;users&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;Ray&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Villalobos&amp;quot;,&lt;br /&gt;
      &amp;quot;joined&amp;quot;: {&lt;br /&gt;
        &amp;quot;month&amp;quot;: &amp;quot;January&amp;quot;,&lt;br /&gt;
        &amp;quot;day&amp;quot;: 12,&lt;br /&gt;
        &amp;quot;year&amp;quot;: 2012&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;firstName&amp;quot;: &amp;quot;John&amp;quot;,&lt;br /&gt;
      &amp;quot;lastName&amp;quot;: &amp;quot;Jones&amp;quot;,&lt;br /&gt;
      &amp;quot;joined&amp;quot;: {&lt;br /&gt;
        &amp;quot;month&amp;quot;: &amp;quot;April&amp;quot;,&lt;br /&gt;
        &amp;quot;day&amp;quot;: 28,&lt;br /&gt;
        &amp;quot;year&amp;quot;: 2010&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
S'utilitza la funcion getJSON de jQuery:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jquery&amp;quot;&amp;gt;&lt;br /&gt;
$.getJSON('files/data.json', function(data) {&lt;br /&gt;
        var output=&amp;quot;&amp;lt;ul&amp;gt;&amp;quot;;&lt;br /&gt;
        for (var i=0;i&amp;lt;data.users.length;i++) {&lt;br /&gt;
            output+=&amp;quot;&amp;lt;li&amp;gt;&amp;quot; + data.users[i].firstName + &amp;quot; &amp;quot; + data.users[i].lastName + &amp;quot;--&amp;quot; + data.users[i].joined.month+&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        output+=&amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;&lt;br /&gt;
        document.getElementById(&amp;quot;placeholder&amp;quot;).innerHTML=output;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ens mostrará en pantalla&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
   * Ray Villalobos--January&lt;br /&gt;
   * John Jones--April&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enviar un objecte JSON amb $.ajax() (JQUERY) ===&lt;br /&gt;
Exemple 1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$.ajax({&lt;br /&gt;
        type: &amp;quot;POST&amp;quot;,&lt;br /&gt;
        url: hb_base_url + &amp;quot;consumer&amp;quot;,&lt;br /&gt;
        contentType: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
        dataType: &amp;quot;json&amp;quot;,&lt;br /&gt;
        data: JSON.stringify({&lt;br /&gt;
            first_name: $(&amp;quot;#namec&amp;quot;).val(),&lt;br /&gt;
            last_name: $(&amp;quot;#surnamec&amp;quot;).val(),&lt;br /&gt;
            email: $(&amp;quot;#emailc&amp;quot;).val(),&lt;br /&gt;
            mobile: $(&amp;quot;#numberc&amp;quot;).val(),&lt;br /&gt;
            password: $(&amp;quot;#passwordc&amp;quot;).val()&lt;br /&gt;
        }),&lt;br /&gt;
        success: function(response) {&lt;br /&gt;
            console.log(response);&lt;br /&gt;
        },&lt;br /&gt;
        error: function(response) {&lt;br /&gt;
            console.log(response);&lt;br /&gt;
        }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Exemple 2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var obj = {};&lt;br /&gt;
&lt;br /&gt;
obj.first_name = $(&amp;quot;#namec&amp;quot;).val();&lt;br /&gt;
obj.last_name = $(&amp;quot;#surnamec&amp;quot;).val();&lt;br /&gt;
obj.email = $(&amp;quot;#emailc&amp;quot;).val();&lt;br /&gt;
obj.mobile = $(&amp;quot;#numberc&amp;quot;).val();&lt;br /&gt;
obj.password = $(&amp;quot;#passwordc&amp;quot;).val();&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
        type: &amp;quot;POST&amp;quot;,&lt;br /&gt;
        url: hb_base_url + &amp;quot;consumer&amp;quot;,&lt;br /&gt;
        contentType: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
        dataType: &amp;quot;json&amp;quot;,&lt;br /&gt;
        data: JSON.stringify(obj),&lt;br /&gt;
        success: function(response) {&lt;br /&gt;
            console.log(response);&lt;br /&gt;
        },&lt;br /&gt;
        error: function(response) {&lt;br /&gt;
            console.log(response);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple 3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    var parametros = {&lt;br /&gt;
                &amp;quot;valorCaja1&amp;quot; : valorCaja1,&lt;br /&gt;
                &amp;quot;valorCaja2&amp;quot; : valorCaja2&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        $.ajax({&lt;br /&gt;
                data:  parametros,&lt;br /&gt;
                url:   'ejemplo_ajax_proceso.php',&lt;br /&gt;
                type:  'post',&lt;br /&gt;
                beforeSend: function () {&lt;br /&gt;
                        $(&amp;quot;#resultado&amp;quot;).html(&amp;quot;Procesando, espere por favor...&amp;quot;);&lt;br /&gt;
                },&lt;br /&gt;
                success:  function (response) {&lt;br /&gt;
                        $(&amp;quot;#resultado&amp;quot;).html(response);&lt;br /&gt;
                }&lt;br /&gt;
        });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XML =&lt;br /&gt;
En aquest apartat es veurà com utilitzar XML per guardar dades des de un servidor PHP.&lt;br /&gt;
Exemple de XML:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Fitxer aules.xml:&lt;br /&gt;
&amp;lt;aules&amp;gt;   &lt;br /&gt;
    &amp;lt;aula&amp;gt;&lt;br /&gt;
        &amp;lt;nom&amp;gt;205&amp;lt;/nom&amp;gt;&lt;br /&gt;
        &amp;lt;subxarxa&amp;gt;172.16.205.0&amp;lt;/subxarxa&amp;gt;&lt;br /&gt;
        &amp;lt;mascara&amp;gt;24&amp;lt;/mascara&amp;gt;&lt;br /&gt;
        &amp;lt;estatinicial&amp;gt;denega&amp;lt;/estatinicial&amp;gt;&lt;br /&gt;
        &amp;lt;estatactual&amp;gt;filtra&amp;lt;/estatactual&amp;gt;&lt;br /&gt;
    &amp;lt;/aula&amp;gt;&lt;br /&gt;
    &amp;lt;aula&amp;gt;&lt;br /&gt;
        &amp;lt;nom&amp;gt;206&amp;lt;/nom&amp;gt;&lt;br /&gt;
        &amp;lt;subxarxa&amp;gt;172.16.206.0&amp;lt;/subxarxa&amp;gt;&lt;br /&gt;
        &amp;lt;mascara&amp;gt;24&amp;lt;/mascara&amp;gt;&lt;br /&gt;
        &amp;lt;estatinicial&amp;gt;denega&amp;lt;/estatinicial&amp;gt;&lt;br /&gt;
        &amp;lt;estatactual&amp;gt;denega&amp;lt;/estatactual&amp;gt;&lt;br /&gt;
    &amp;lt;/aula&amp;gt;&lt;br /&gt;
&amp;lt;/aules&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Per representar aquest fitxer com a un arbre i poder-lo recòrrer s'utilitza la llibreria DOMDocument de PHP.&lt;br /&gt;
&lt;br /&gt;
== Creació de l'Arbre XML ==&lt;br /&gt;
Per crear una representació del fitxer anterior, primer s'ha de crear l'objecte DOMDocument i a continuació llegir el fitxer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$file = &amp;quot;files/aules.xml&amp;quot;;&lt;br /&gt;
$xmldom = new DOMDocument();&lt;br /&gt;
$xmldom-&amp;gt;load($file);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Obtenir un element de l'arbre ==&lt;br /&gt;
Es pot utilitzar la funció ''getElementsByTagName''. Exemple:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$aules = $xmldom-&amp;gt;getElementsByTagName(&amp;quot;aula&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recòrrer tots els elemens ==&lt;br /&gt;
Podem recòrrer tots els element amb un foreach:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$aules = $xmldom-&amp;gt;getElementsByTagName(&amp;quot;aula&amp;quot;);&lt;br /&gt;
foreach ($aules as $aula) {&lt;br /&gt;
    $name = $aula-&amp;gt;getElementsByTagName(&amp;quot;nom&amp;quot;)-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
    $net = $aula-&amp;gt;getElementsByTagName(&amp;quot;subxarxa&amp;quot;)-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
    $mask = $aula-&amp;gt;getElementsByTagName(&amp;quot;mascara&amp;quot;)-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Afegir un nou element ==&lt;br /&gt;
Per afegir un nou elment s'ha de crear un node nou i afegir tos els fills que es necessiti per crear el XML correcte.&lt;br /&gt;
Exemple:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auladom = $xmldom-&amp;gt;createElement(&amp;quot;aula&amp;quot;);&lt;br /&gt;
//creamos el nodo NOM con su valor $classroomname&lt;br /&gt;
$aulanomdom = $xmldom-&amp;gt;createElement(&amp;quot;nom&amp;quot;);&lt;br /&gt;
$domnode = $xmldom-&amp;gt;createTextNode(strtolower($classroomName));&lt;br /&gt;
$aulanomdom-&amp;gt;appendChild($domnode);&lt;br /&gt;
$auladom-&amp;gt;appendChild($aulanomdom);&lt;br /&gt;
&lt;br /&gt;
//creamos el nodo NETWORK con su valor $network&lt;br /&gt;
$aulanetwork = $xmldom-&amp;gt;createElement(XARXA_AULA_XML);&lt;br /&gt;
$domnode = $xmldom-&amp;gt;createTextNode(strtolower($network));&lt;br /&gt;
$aulanetwork-&amp;gt;appendChild($domnode);&lt;br /&gt;
$auladom-&amp;gt;appendChild($aulanetwork);&lt;br /&gt;
&lt;br /&gt;
//creamos el nodo MASK con su valor $mask&lt;br /&gt;
$aulamask = $xmldom-&amp;gt;createElement(MASK_AULA_XML);&lt;br /&gt;
$domnode = $xmldom-&amp;gt;createTextNode(strtolower($mask));&lt;br /&gt;
$aulamask-&amp;gt;appendChild($domnode);&lt;br /&gt;
$auladom-&amp;gt;appendChild($aulamask);&lt;br /&gt;
&lt;br /&gt;
//creamos el nodo initial status con su valor $initialstatus&lt;br /&gt;
$aulastatus = $xmldom-&amp;gt;createElement(INIT_AULA_XML);&lt;br /&gt;
$domnode = $xmldom-&amp;gt;createTextNode(strtolower($initialstatus));&lt;br /&gt;
$aulastatus-&amp;gt;appendChild($domnode);&lt;br /&gt;
$auladom-&amp;gt;appendChild($aulastatus);&lt;br /&gt;
&lt;br /&gt;
//creamos el nodo current status con su valor $initialstatus&lt;br /&gt;
$aulacurrentstatus = $xmldom-&amp;gt;createElement(CURRENT_AULA_XML);&lt;br /&gt;
$domnode = $xmldom-&amp;gt;createTextNode(strtolower($initialstatus));&lt;br /&gt;
$aulacurrentstatus-&amp;gt;appendChild($domnode);&lt;br /&gt;
$auladom-&amp;gt;appendChild($aulacurrentstatus);&lt;br /&gt;
&lt;br /&gt;
//afegim el node aula a la llista de nodes&lt;br /&gt;
$root = $xmldom-&amp;gt;documentElement;&lt;br /&gt;
$root-&amp;gt;appendChild($auladom);&lt;br /&gt;
&lt;br /&gt;
//guardem        &lt;br /&gt;
$xmldom-&amp;gt;save($filename);  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finalment, s'ha de guardar el dom resultant al fitxer per mantenir correctament els canvis. Es fa amb la funció ''save''.&lt;br /&gt;
&lt;br /&gt;
== Esborrar un element ==&lt;br /&gt;
Per esborrar un element, primer s'ha de cercar, després dir-li al pare que ens volem eliminar. Però també hem d'esborrar els fills!.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//funció que esborra un node i els seus fills&lt;br /&gt;
    function deleteNode($node) {&lt;br /&gt;
        deleteChildren($node);&lt;br /&gt;
        $parent = $node-&amp;gt;parentNode;&lt;br /&gt;
        $oldnode = $parent-&amp;gt;removeChild($node);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//funció que esborra els fills d'un node&lt;br /&gt;
    function deleteChildren($node) {&lt;br /&gt;
        while (isset($node-&amp;gt;firstChild)) {&lt;br /&gt;
            deleteChildren($node-&amp;gt;firstChild);&lt;br /&gt;
            $node-&amp;gt;removeChild($node-&amp;gt;firstChild);&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
    &lt;br /&gt;
//funció que cerca al XML un node amb el nom=$classroomname    &lt;br /&gt;
    function delete($classroomName){&lt;br /&gt;
         $aules = $xmldom-&amp;gt;getElementsByTagName(&amp;quot;aula&amp;quot;);&lt;br /&gt;
          foreach ($aules as $aula) {&lt;br /&gt;
            $name = $aula-&amp;gt;getElementsByTagName(&amp;quot;nom&amp;quot;)-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
            if (strcmp(strtolower($name), strtolower($classroomName)) == 0){&lt;br /&gt;
                deleteNode($aula);&lt;br /&gt;
                $xmldom-&amp;gt;save($this-&amp;gt;filename);   &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Finalment, s'ha de guardar el dom resultant al fitxer per mantenir correctament els canvis. Es fa amb la funció ''save''.&lt;br /&gt;
&lt;br /&gt;
== Modificar un valor ==&lt;br /&gt;
Per modificar un valor, primer es cerca i després es mira quin dels atributs es vol modificar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    function setNewClassroomAttr($classroomName, $attr, $value)&lt;br /&gt;
    {&lt;br /&gt;
        $aules = $xmldom-&amp;gt;getElementsByTagName(&amp;quot;aula&amp;quot;);&lt;br /&gt;
        foreach ($aules as $aula) {&lt;br /&gt;
            $name = $aula-&amp;gt;getElementsByTagName(&amp;quot;nom&amp;quot;)-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
            if (strcmp(strtolower($name), strtolower($classroomName)) == 0){&lt;br /&gt;
                $aula-&amp;gt;getElementsByTagName($attr)-&amp;gt;item(0)-&amp;gt;nodeValue = strtolower($value);&lt;br /&gt;
                $this-&amp;gt;xmldom-&amp;gt;save($this-&amp;gt;filename);   &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finalment, s'ha de guardar el dom resultant al fitxer per mantenir correctament els canvis. Es fa amb la funció ''save''.&lt;br /&gt;
&lt;br /&gt;
Podeu trobar més informació a http://www.php.net/manual/en/class.domdocument.php&lt;br /&gt;
&lt;br /&gt;
=Traduïr un XML a JSON =&lt;br /&gt;
En el següent enllaç podem veure que els fitxers XML es poden traduir a sintaxi JSON. Tanmateix, quan els fitxers XML es compliquen, el seu equivalent JSON passa a ser bastant difícil de llegir i interpretar:&lt;br /&gt;
http://www.utilities-online.info/xmltojson/#.WjqMa2fWxMw&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== EXERCICIS ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Crea una aplicació que rep com paràmetre en un input una ciutat i després es realitza una consulta amb fetch que retorni el temps de la ciutat o que digui que no hi ha cap ciutat anomenada així.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Api d'on treurem el temps:&lt;br /&gt;
&lt;br /&gt;
http://neftali.clubdelphi.com/hablando-del-tiempo-openweathermap-12/&lt;br /&gt;
&lt;br /&gt;
*Exemple amb la ciutat Barcelona&lt;br /&gt;
http://api.openweathermap.org/data/2.5/find?&amp;amp;q=Barcelona,es&amp;amp;lang=es&amp;amp;units=metric&amp;amp;APPID=278857e8dee51f914026df21d0d40c19&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*Exemple html on mostra les dades obtingudes:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
1.b) Es vol retornar el json del temps al client.&lt;br /&gt;
&lt;br /&gt;
:[[solucio_temps]]&lt;br /&gt;
&lt;br /&gt;
2. Tenim un fitxer Json al servidor, volem carregar aquest fitxer i treballar amb la seua informació. &lt;br /&gt;
&lt;br /&gt;
http://www.cristalab.com/tutoriales/leer-json-con-javascript-y-php-c104372l/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Se desea hacer un cuadrado de 100 x 100 px que se vaya desplazando en función de las teclas que se presionen (arriba abajo derecha izquierda)....&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amoncusi2</name></author>	</entry>

	</feed>