20251030 JSON_1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Quizás no es solo la voz, pero bueno, para las tonterías que decimos es lo suficientemente.
00:00:00
Entonces, los JSON es otro formato de archivos de texto que admite metainformación.
00:00:08
Lo que pasa es que la metainformación en los XML era una estructura jerárquica de nodos,
00:00:15
como sabemos de memoria, y la metainformación en los JSON está adaptada a la programación orientada a objetos.
00:00:21
entonces, como recordatorio
00:00:31
por si alguien no tiene muy claro en la cabeza
00:00:33
lo que es un JSON
00:00:35
¿qué estructura tiene un JSON?
00:00:36
no tiene comentarios
00:00:39
el JSON está más orientado
00:00:39
a que lo parsen máquinas y aplicaciones
00:00:42
directamente, el XML
00:00:45
en su momento también estaba orientado
00:00:47
a que uno lo viera físicamente
00:00:49
viera su información, le diera incluso
00:00:51
un estilo y lo pudiera ver en un
00:00:53
navegador web
00:00:55
el JSON está esencialmente orientado
00:00:57
a que las máquinas lo parsen
00:00:59
para sacar su información
00:01:00
¿vale? por eso no tiene
00:01:02
ni comentarios
00:01:04
¿puedo pasar?
00:01:05
pero si vengo de esta clase
00:01:08
yo ya he estado aquí
00:01:10
pero has llegado tarde, has ido
00:01:11
y has llegado a mitad de la clase interrumpiendo
00:01:13
entonces
00:01:15
si has llegado a mitad de una clase
00:01:18
que ha arrancado, lo normal es decir
00:01:20
puedo pasar porque por defecto
00:01:22
no se interrumpe ningún acto
00:01:24
sea una clase, sea una conferencia
00:01:25
del presidente, no se interrumpe
00:01:28
ya, a ver, pasar
00:01:30
diciendo hola, interrumpir
00:01:35
y además interrumpir mostrando
00:01:37
una educación cuestionable
00:01:38
entonces, tenéis que mejorarla
00:01:40
tenéis que mejorar esa educación y sobre todo
00:01:42
esas pautas de funcionamiento
00:01:44
que todavía son adolescentes
00:01:46
para que salten al modo adulto
00:01:49
¿vale? entonces
00:01:51
cuando se entra en un sitio donde ya se está
00:01:52
hablando, se está haciendo cosas, como se asume
00:01:54
que se interrumpe, pues se hace una
00:01:56
pequeña muestra de que pudo pasar, entonces
00:01:58
lo normal es que te dejen pasar, se pasa
00:02:00
y ya está, ¿vale? Entonces tú
00:02:02
entrarías así en una reunión
00:02:04
informal que tiene tu jefe
00:02:07
con alguien
00:02:08
dices, no sé, eso es que te cuestionas
00:02:09
tu jefe ha contratado a tres personas
00:02:13
o sea, ha contratado, ha juntado a tres
00:02:14
personas en plan informal, entre las cuales una debería ser
00:02:16
tú, para charlar y está en
00:02:18
una habitación charlando en una sala de reuniones hablando
00:02:20
de ese tema, tú entrarías diciendo
00:02:22
hola
00:02:24
por muy informal que fuera
00:02:25
no deberías
00:02:27
tú darías y diría, disculpad
00:02:28
vengo un poco tarde
00:02:31
pero no sé qué, puedo incorporarme
00:02:34
puedo pasar, eso es lo que harías
00:02:36
¿verdad?
00:02:37
¿dudas? pues es lo, ¿vale?
00:02:39
bueno, pues son estas cosas evidentes
00:02:41
que por alguna razón para algunos de vosotros
00:02:43
no son tan evidentes, entonces que se empiecen a hacer evidentes
00:02:45
¿vale? más que nada para que
00:02:48
luego no nos lleguen los emails
00:02:49
que nos llega una vez tras otro de
00:02:51
¿qué es esto que nos estáis mandando?
00:02:53
Bueno, los JSON están pensados esencialmente
00:02:56
para que los parsen aplicaciones,
00:03:00
no tanto para que los miren humanos,
00:03:02
para que los parsen aplicaciones.
00:03:04
Por eso los comentarios han desaparecido,
00:03:05
ni se contemplan,
00:03:08
y por eso su estructura se adapta
00:03:09
al paradigma de programación habitual
00:03:12
en las aplicaciones comerciales,
00:03:14
que es la orientada a objetos.
00:03:15
Entonces, ¿cómo es la estructura de un JSON?
00:03:17
Pues un fichero JSON esencialmente
00:03:19
Esencialmente es lo que para nosotros es un objeto, que para el JSON es una cosa entre llaves y es una secuencia, lo que hay entre las llaves es una secuencia de pares.
00:03:25
Clave, valor, clave, valor, clave, valor. Eso es un objeto instanciado, ¿verdad? Un objeto instanciado es propiedad, valor, propiedad, valor, propiedad, valor.
00:03:37
Pues un fichero JSON es como si fuera un objeto instanciado. No es una plantilla, es una cosa que tiene datos. Los datos están en los objetos instanciados, no están en las clases.
00:03:46
Claro. Bueno, pues un objeto, un fichero JSON es como si fuera un objeto ya instanciado, pero sus valores no están en una RAM, sino que están guardados en un fichero de texto. ¿Vale? Entonces, la secuencia de pares, clave-valor, se va separando por comas.
00:03:55
Y la clave va entre comillas, por ejemplo, el nombre, dos puntos y el valor. ¿Vale? Y así podría haber, pues, edad.
00:04:12
no, no, no, es que esto no es
00:04:28
programación, con lo cual
00:04:31
esto no es variable, o sea, esto es
00:04:34
vale
00:04:36
entonces, bueno, así
00:04:37
en este caso, esto tendría
00:04:39
pues
00:04:42
tendría
00:04:43
dos
00:04:46
dos pares, clave, valor y ya está
00:04:47
siguiente pregunta
00:04:51
los valores
00:04:53
¿qué puedo poner ahí? ¿puedo poner cualquier
00:04:55
cosa? bueno, aquí
00:04:57
Ahí se pueden poner cadenas de texto, cadenas de texto, que sería texto entre comillas, cadenas, ¿vale?
00:04:59
Se podría poner ahí.
00:05:07
¿Qué se podrían poner?
00:05:09
Números, tanto enteros como decimales, ¿verdad?
00:05:11
Números enteros como números decimales.
00:05:15
Números.
00:05:18
También se puede poner boolean.
00:05:20
También admite poner true o false, ¿vale?
00:05:24
Para que un par clave-valor refleje el hecho de si algo pasa o no pasa.
00:05:29
También admite poner esa palabra que nos suena, null, que es nada.
00:05:35
Aquí todavía no hay nada.
00:05:40
Y el valor puede ser también otro objeto.
00:05:44
Podría ser otro objeto que a su vez es un conjunto de pares clave-valor.
00:05:53
Podría ser otro objeto.
00:05:57
Por ejemplo, aquí podríamos tener, pues, instituto es otra propiedad de este objeto.
00:05:58
Instituto es otra propiedad, ¿vale?
00:06:06
Entonces, instituto, como es un valor complejo, podría tener como contenido otro objeto.
00:06:15
Pues nombre del instituto, el que fuera y localización del instituto, la que fuera, ¿vale?
00:06:25
Luego los objetos pueden ser también valores posibles de un par clave valor, ¿vale?
00:06:35
Entonces esto ya es más parecido a la máquina, de hecho el hecho de que admita un null como valor
00:06:43
pues ya suena a que eso sobre todo tiene sentido para una máquina que lo está parseando,
00:06:47
no para un humano que lo está mirando.
00:06:52
¿Y qué otro concepto
00:06:55
incorpora un JSON?
00:06:59
El JSON es como el XML
00:07:01
El JSON, sí
00:07:02
El JSON es un formato
00:07:05
para guardar datos
00:07:07
en ficheros de texto
00:07:08
que son los más manejables, los más ligeros
00:07:11
Entonces
00:07:13
tú puedes guardar los datos escribiendo el fichero
00:07:14
de texto, hola, ¿qué tal? Mis datos son...
00:07:17
Pero es que, ¿quién saca
00:07:19
información de ahí? Un humano, si lo lee, sí
00:07:21
pero una máquina, ¿cómo saca información de un texto
00:07:23
escrito en lenguaje natural, entonces hay que darle
00:07:25
un poco de estructura para que una máquina
00:07:27
entienda qué significa cada dato
00:07:29
esa es la meta información
00:07:31
la estructura que le informa a una máquina
00:07:32
qué significa cada cosa
00:07:35
entonces en XML esa estructura es un árbol
00:07:37
entonces que un nodo
00:07:39
esté dentro de otro, te aporta información
00:07:41
que dentro de un nodo haya muchos
00:07:43
nodos repetidos, te aporta información
00:07:45
¿vale? pues el JSON es otro formato
00:07:47
para organizar
00:07:49
la información, entonces yo podría decir
00:07:51
oye, soy Pepito, tengo 28 años
00:07:53
y voy en el instituto no sé qué.
00:07:56
Para que una máquina saque información
00:07:58
de ahí se vuelve loco. Pero si esa misma
00:08:00
información la pones estructurada así,
00:08:01
Pepito, 28, Rosa, Charly,
00:08:04
Avizalda,
00:08:06
pues una máquina va a sacar esa
00:08:08
información muchísimo mejor.
00:08:09
¿Vale? Que no está puesto así. Pero es otro formato.
00:08:12
Vale, pues entonces,
00:08:14
los objetos
00:08:16
instanciados,
00:08:16
en nuestra noción de
00:08:19
objeto instanciado, que es algo que tiene valores,
00:08:21
Puede ser el valor también de otra propiedad, de otro par clave-valor.
00:08:23
Y ya, por último, también integra el concepto básico en cualquier lenguaje de programación, que es un array.
00:08:31
En un lenguaje de programación no hacemos nada sin arrays, porque es la manera de tener muchas cosas bajo una única referencia.
00:08:39
El array es un concepto fundamental sin el cual no podemos hacer nada.
00:08:48
otra cosa es que como el array
00:08:51
es costoso
00:08:53
de manejar a nivel
00:08:55
de código, lo envolvamos
00:08:57
en una clase
00:08:59
que tiene el array por debajo
00:09:01
o bueno, tiene otras cosas
00:09:03
y nos lo envuelvan, pues como el array list
00:09:04
o eso, ¿vale? pero el concepto
00:09:07
básico de caja
00:09:09
en la que yo meto muchas cosas bajo una única referencia
00:09:11
es imprescindible
00:09:13
para programar cualquier cosa
00:09:14
pues ese concepto se mete también en los JSON
00:09:16
Es un array en JSON, se hace entre corchetes con los elementos que tenga separados por comas y los elementos que tiene el array, de nuevo, pueden ser cadenas, números, los posibles valores que tiene el JSON o también objetos, también objetos puede tener el array, ¿vale?
00:09:19
Bueno, pues un valor posible también puede ser un array, ¿vale?
00:09:44
Un array.
00:09:49
Entonces, este de aquí podría tener instituto, módulos.
00:09:50
¿Qué tengo?
00:09:53
Como módulos son muchos, pues el valor de esta clave módulos
00:09:54
podría ser un array con todos los nombres de mis módulos, por ejemplo,
00:09:59
o con todos los objetos que guardan la información de mi módulo,
00:10:03
nombre, profesor, ¿vale?
00:10:09
pues ya está, combinando eso tenemos un JSON
00:10:11
entonces según
00:10:13
la
00:10:14
el estándar de JSON
00:10:16
pues un fichero JSON es válido
00:10:19
si contiene
00:10:21
un único objeto
00:10:22
de estos o también
00:10:25
si contiene un array de objetos
00:10:27
también
00:10:29
es un fichero JSON
00:10:31
válido según
00:10:33
el estándar de JSON, vale
00:10:35
tanto un fichero de objetos
00:10:37
y el objeto con dentro todo lo que haga falta
00:10:39
como un único objeto
00:10:45
ambos son, según el estándar
00:10:46
de JSON, son JSON válidos
00:10:49
que cualquier framework de JSON
00:10:51
puede parsear sin problema
00:10:52
tanto una RAI de muchos de estos
00:10:54
como uno único
00:10:56
entonces esto tiene un paralelismo claro con el XML
00:10:58
este JSON sería
00:11:01
un nodo RAID
00:11:03
un nodo RAID, alumno, usuario
00:11:07
lo que fuera, con su nodo nombre
00:11:09
su nodo edad, su nodo instituto
00:11:11
que tendría los subnodos dentro
00:11:14
que serían nombre y localización
00:11:15
su nodo módulos
00:11:18
que sería un envolvente de un montón
00:11:20
de módulos
00:11:22
es decir, el paralelismo
00:11:22
entre un JSON y un XML
00:11:25
es inmediato
00:11:26
pero
00:11:29
esto es mucho más
00:11:31
parecido a la
00:11:34
notación de objetos y de clases
00:11:35
y por tanto cualquier programa orientado a objetos
00:11:38
Pues lo va a parsear, se supone, con más facilidad
00:11:40
Vale, JSON no lo hemos dicho
00:11:43
Viene de
00:11:44
Javascript
00:11:46
Object Notation, juraría
00:11:48
Si alguien tiene
00:11:50
Un navegador abierto, que lo busque rápido
00:12:00
Viene de ahí, ¿verdad?
00:12:03
Vale
00:12:06
Bueno, pues a nosotros
00:12:07
Que nos interesa los JSON
00:12:09
Sí que se usan muchísimo, ¿vale?
00:12:11
Como ficheros de configuración
00:12:13
sustituyendo progresivamente
00:12:14
a los XML o en muchos casos
00:12:17
ya sustituidos, aunque bueno, se arrastre
00:12:19
mucho XML todavía, es inevitable
00:12:21
que se arrastre mucho XML
00:12:23
sobre todo
00:12:24
como traspaso de información
00:12:26
entre microservicios
00:12:29
ese es uno quizá de las cosas
00:12:31
en los que más ha entrado
00:12:33
el JSON
00:12:35
seguro que hay programas para
00:12:37
transmitir XML a JSON
00:12:38
seguro, seguro
00:12:41
claro
00:12:43
seguro
00:12:44
entonces
00:12:45
que es un
00:12:47
ya que lo
00:12:47
hemos mencionado
00:12:48
y luego
00:12:49
podemos hacer
00:12:52
un ejemplito
00:12:54
como
00:12:55
es inevitable
00:12:58
que si mencionamos
00:13:00
Jason
00:13:01
no nos venga
00:13:01
este término
00:13:02
a la cabeza
00:13:03
nos tiene que venir
00:13:03
pues bueno
00:13:04
que nos empiece
00:13:05
a sonar un poco
00:13:06
¿vale?
00:13:07
entonces
00:13:09
nosotros
00:13:09
estamos acostumbrados
00:13:10
a hacer aplicaciones
00:13:11
con su arquitectura
00:13:12
Pues sus clases, cuando yo tengo que resolver un problema, me hago mi método que me resuelve mi problema, lo llamo desde la otra clase y ya está. Y así tengo yo mi aplicación hecha, que se lo guisa y se lo come todo con sus métodos ahí ubicados.
00:13:15
Esto, ¿esto qué es?
00:13:32
Pues esto es una arquitectura
00:13:36
que es un poquito
00:13:37
monolítica
00:13:41
Pues ya está
00:13:43
Yo ahí tengo mi monolito
00:13:47
donde lo tengo todo
00:13:50
Y bueno, y no pasa nada
00:13:51
porque esto sigue siendo reutilizable
00:13:53
Yo puedo publicar
00:13:55
estas clases
00:13:56
en Mishar, en donde sea
00:13:59
y los pueden reutilizar y ya está, no pasa nada
00:14:01
Pero hombre, lo pongo quizá un poquito
00:14:03
más complicado
00:14:05
si quiero yo ser usado
00:14:06
de esta manera como más complicado
00:14:08
entonces, para hacer la arquitectura
00:14:10
más ágil, ahora ya en este mundo
00:14:12
de internet y de reutilización y de todo eso
00:14:14
para hacerla más ágil
00:14:16
pues podríamos hacer
00:14:17
podríamos programar
00:14:19
basándonos en una arquitectura
00:14:22
de microservicios
00:14:25
vale, ¿qué es un microservicio?
00:14:27
pues un servicio pequeñito
00:14:38
¿y qué es un servicio?
00:14:39
pues una utilidad para el universo
00:14:41
¿no? eso es un servicio, una utilidad
00:14:43
¿te estás enterando?
00:14:45
¿eh?
00:14:49
un microservicio es como el que tenéis ahí
00:14:51
encima cerrado, o sea, es que eso ya es un servicio
00:14:53
nulo, un null service
00:14:55
pues un microservicio es un servicio
00:14:57
eso, un servicio pequeñito
00:14:59
y un servicio es
00:15:01
una utilidad al universo
00:15:03
¿vale? entonces
00:15:05
uno, pues puede hacer una utilidad
00:15:07
para el universo, pues como
00:15:09
por ejemplo, validar la letra
00:15:11
del DNI, utilidades
00:15:13
que se pueden usar muchísimo, muchas
00:15:15
aplicaciones, entonces
00:15:17
pues uno hace esa
00:15:19
utilidad
00:15:21
consultar datos
00:15:21
de no sé qué para cualquier cosa
00:15:26
algo que necesite en su aplicación
00:15:28
pues va separando en servicios pequeñitos
00:15:30
utilidades pequeñitas
00:15:32
utilidades pequeñitas que van a usar
00:15:34
muchas de las aplicaciones de mi empresa
00:15:36
de donde sea, vale, pues esa utilidad
00:15:38
pequeñita yo ya la hago
00:15:40
y alguien tiene que llamarla
00:15:41
y tiene que devolver un valor
00:15:43
vale, esa utilidad pequeñita
00:15:45
¿cómo la publico?
00:15:47
bueno, pues de nuevo, podría yo meterla
00:15:50
en una clase, hacer el hard, decir toma el hard
00:15:51
y ya está, y llámame
00:15:53
vale, pero, bueno, es un poco feo, poco ágil
00:15:55
eso, ¿no? entonces, ¿cómo la podemos publicar?
00:15:58
pues podemos llevar esta utilidad
00:16:00
pequeñita a una
00:16:02
aplicación web
00:16:04
a un servidor web
00:16:05
perdón
00:16:08
¿vale? lo podemos llevar
00:16:08
Esta utilidad pequeñita
00:16:11
La programamos de tal manera
00:16:12
Ya veremos como
00:16:15
La programamos de tal manera
00:16:17
Que en lugar de arrancarla
00:16:19
La máquina virtual directamente
00:16:22
Como es una aplicación de escritorio
00:16:23
La arranca un servidor de aplicaciones
00:16:25
Que un servidor de aplicaciones es otra cosa distinta
00:16:28
¿Vale?
00:16:32
Un servidor de aplicaciones
00:16:33
Pues los que habéis hecho web
00:16:34
Lógicamente lo sabéis de memoria
00:16:35
Y cualquier cosa rara que diga
00:16:38
me la corregís
00:16:41
pero bueno, es un resumen muy resumido
00:16:43
un servidor de aplicaciones es otro tipo de máquina
00:16:45
no es una máquina virtual sin más
00:16:47
de mi ordenador, un servidor de aplicaciones
00:16:49
es capaz
00:16:51
que añade
00:16:52
pues un servidor de aplicaciones es capaz
00:16:53
de estar ahí escuchando con su oreja
00:16:57
de estar ahí escuchando peticiones
00:16:59
que le lleguen por un puerto
00:17:01
está ahí poco a poco arrancado
00:17:03
escuchando peticiones
00:17:05
y cuando esa petición le llega
00:17:06
él extrae de esa petición
00:17:08
get post
00:17:11
el tipo que sea y con los parámetros
00:17:11
que llegue, la información que le llegue
00:17:14
extrae de esa
00:17:16
todo ese paquete que le llega
00:17:18
soy get, soy post, tengo estos parámetros
00:17:20
voy a este sitio
00:17:22
te estoy invocando a este programa
00:17:24
te doy estos datos, de todo eso que le llega
00:17:26
ahí empaquetado, el servidor de aplicaciones
00:17:29
es capaz de pum
00:17:30
cargar este pequeño
00:17:32
código de ahí, es capaz de
00:17:34
cargarlo, lo carga
00:17:36
y esto ya sí que es un código Java que se ejecuta
00:17:38
accede a la base de datos, lo que haga
00:17:40
y ahí se queda cargado
00:17:42
ya él ahí cargadito, el servidor de aplicaciones
00:17:44
y ya esto se queda muy ágil
00:17:47
lo llama y el servidor de aplicaciones
00:17:48
pues es capaz de
00:17:51
mandar la respuesta
00:17:52
a ese request que le ha llegado
00:17:54
pues él ya puede construir
00:17:57
un response
00:17:59
¿vale? entonces mi aplicación
00:17:59
puede integrar llamadas
00:18:02
a estas
00:18:05
urls
00:18:07
y estas urls van invocando
00:18:08
esos pequeños servicios
00:18:11
¿vale? entonces eso es más ágil
00:18:12
que buscar mi dependencia, integrarla
00:18:15
en mi aplicación
00:18:17
eso va engordando, va engordando
00:18:18
dependo efectivamente de que la dependencia
00:18:20
esté disponible, sin embargo
00:18:23
los servicios se ejecutan en el
00:18:25
servidor de aplicaciones y ahí los tengo
00:18:27
yo los llamo
00:18:28
me da la respuesta y se acabó, entonces esta
00:18:30
arquitectura ya sí que está completamente distribuida
00:18:32
porque gran parte de mis funcionalidades
00:18:34
se están ejecutando en servidores de aplicaciones
00:18:37
y yo obtengo la respuesta y ya está
00:18:39
vale, pues a que venía
00:18:41
todo este rollo
00:18:43
todo este rollo venía a que
00:18:44
para
00:18:47
muchos de estos microservicios
00:18:49
una forma muy
00:18:51
ágil y muy fácilmente
00:18:53
parseable de recibirle
00:18:55
informaciones en un JSON, normalmente
00:18:58
cuando uno consulta datos de una base de datos
00:18:59
o pide cosas, lo que recibe
00:19:01
son objetos, eso es lo que quiere, objetos
00:19:03
porque objetos es con lo que trabaja su aplicación
00:19:05
trabaja con objetos, pues que mejor
00:19:07
manera de pasar
00:19:10
por esta tubería un objeto
00:19:11
que en un fichero de texto
00:19:13
JSON que lo representa
00:19:16
que mejor manera, bueno pues
00:19:17
el JSON ha encajado
00:19:19
perfectamente en esta arquitectura
00:19:21
¿vale?
00:19:23
entonces, estos pequeñitos
00:19:25
servicios web, pues
00:19:28
tendrán sus frameworks para
00:19:29
parsear estos JSON
00:19:31
para construirlos
00:19:32
cuando los mandan de salida, etc.
00:19:34
¿Vale?
00:19:37
Bueno, pues, ¿y de qué frameworks hablamos?
00:19:39
Que son necesarios, entonces, en cualquier
00:19:41
contexto en el que haya que parchear un JSON.
00:19:43
A ver, pues,
00:19:46
esencialmente, el
00:19:47
tocho, el gordo, el guapo,
00:19:48
el magnífico,
00:19:51
es el mismo.
00:19:53
Entonces, cuando tenemos una aplicación gorda
00:19:56
y nos ponemos a mirar sus dependencias,
00:19:58
es muy raro
00:20:00
que no aparezca entre sus dependencias
00:20:01
un paquete que diga
00:20:03
algo así, paster xml
00:20:06
punto jackson, bla bla bla
00:20:08
es raro, porque ese es un framework
00:20:09
enorme con un tocho con
00:20:12
millones de posibilidades y de cosas
00:20:14
entre ellas un parseo
00:20:16
muy eficiente del json
00:20:17
con miles de métodos
00:20:20
de los cuales uno
00:20:22
recuerda dos
00:20:24
pero no le hace falta recordar más, sabiendo la filosofía
00:20:25
de abajo, luego ya rápidamente
00:20:28
puede ir a hacer lo que
00:20:30
lo que necesite
00:20:31
¿vale? y el FasterXML
00:20:34
este, pues imagino que será otro
00:20:36
igual que el GlassFish
00:20:38
pues el FasterXML será otro
00:20:39
otro consorcio
00:20:42
de desarrolladores
00:20:43
¿vale? y entre lo que han desarrollado
00:20:45
pues esta cosa también
00:20:48
también está para
00:20:49
cuando nuestra
00:20:51
ambición está un poquito más
00:20:54
reducida
00:20:56
pues Google
00:20:57
tiene esta
00:20:59
¿Vale?
00:21:00
JSON
00:21:03
Y esta es más manejable, más amigable
00:21:04
Pero bueno, lo que hay de fondo es lo mismo
00:21:07
Tú parseas, te da un nodo
00:21:10
Un objeto
00:21:12
Nodo JSON y de ahí vas entrando
00:21:12
Y ya está
00:21:15
Esta es como más simplicita
00:21:16
Y esta es un poco más tocha
00:21:18
Entonces vamos a hacer un ejemplito con esta
00:21:20
¿Vale?
00:21:23
A ver, ejemplito que nos vamos a hacer
00:21:25
Eso
00:21:27
un lío completamente, porque
00:21:29
entre que encontremos los métodos, no sé qué
00:21:31
claro, pero es que ese es nuestro trabajo
00:21:33
hacernos un lío y sobrevivir
00:21:35
no, no, la simple la miráis vosotros
00:21:37
si la simple es la que vimos año pasado
00:21:39
pero es que cada año sois todos mucho
00:21:41
más listos, entonces este año ya pasamos
00:21:43
de la simple y nos vamos a esta directamente
00:21:45
pero no
00:21:48
no, al contrario
00:21:49
no quiero insultar vuestra inteligencia
00:21:50
Jason no tiene atributos
00:21:53
no, o sea
00:21:58
lo que está entre llaves
00:21:59
o hay que hacer como un xml
00:22:02
olvídate del xml
00:22:03
el xml lo hemos dejado atrás ahora mismo
00:22:05
vale, entonces
00:22:07
pues vamos a poner un ejemplito en el cual
00:22:10
con el jackson este, parseamos
00:22:12
un json, lo retocamos, lo volvemos a escribir
00:22:14
y ya está, y luego por último
00:22:16
lo vamos a
00:22:18
a usar
00:22:20
pues desde un servicio de estos
00:22:21
en un servidor de aplicaciones
00:22:23
vale, entonces nos vamos a hacer
00:22:25
un pequeñísimo
00:22:27
servicio de estos
00:22:30
un pequeñísimo servicio que use el
00:22:32
FasterXML
00:22:34
y ya está
00:22:34
pero lo vamos a hacer
00:22:37
desde sus tripas
00:22:39
desde lo que tiene en la base
00:22:41
de cero, no con esos envolventes
00:22:44
que se le ponen por encima de Spring Boot
00:22:46
de no sé qué, no, lo vamos a hacer con
00:22:48
destripado, desde cero
00:22:50
pero bueno, primero vamos a ver si nos aclaramos con el
00:22:51
Faster, con el Jackson este de aquí
00:22:53
venga
00:22:56
A ver
00:22:57
Pues vamos a ver
00:23:02
Abrimos
00:23:06
Ahora pongo la esta que no está puesta
00:23:12
Nuestro eclipse
00:23:14
Tengo 200.000 millones de eclipses
00:23:17
Ya no sé cuál es
00:23:20
El que tengo que abrir cada vez
00:23:22
Ahora mismo lo normal
00:23:24
Vamos a hacer un ejemplo con el XML
00:23:27
Para que la arquitectura nos funcione
00:23:29
Y luego ya mover eso
00:23:32
A un servicio web
00:23:34
Es moverlo al serplet y se acabó
00:23:36
No tiene más
00:23:37
Vale
00:23:38
Dígame
00:24:04
¿Eh?
00:24:08
Que lo haga grande
00:24:11
Vale
00:24:12
Venga, a ver
00:24:14
Lo empezamos de cero
00:24:16
Para que nos salgan todos los errores posibles
00:24:19
Del mundo y los arreglemos
00:24:21
no pasa nada porque tengo chuletitas
00:24:23
aquí de sobra para acudir a ellas
00:24:29
cuando haga falta y tenemos HGPT
00:24:30
así que vamos a sobrevivir
00:24:32
dentro de esta circunstancia terrible
00:24:34
que es trabajar con un Jason con el Jackson
00:24:36
entonces, vale
00:24:38
a ver, como vamos
00:24:40
lógicamente a necesitar dependencias
00:24:44
pues un Maven Project
00:24:47
todo lo más simple del mundo
00:24:48
vale
00:24:53
ficheros
00:25:06
Jason
00:25:09
Nuestro objetivo es ver solamente de qué va esto
00:25:10
¿Vale? No lógicamente
00:25:17
Meternos en todo el conocimiento posible
00:25:19
De Jackson porque es imposible
00:25:21
¡Hala!
00:25:23
Ya lo tenemos
00:25:27
Aquí
00:25:28
Vale
00:25:30
Vamos a, si decidimos que usamos Jackson
00:25:31
Pues vamos a necesitar poner aquí la dependencia
00:25:40
Bueno, antes que nada, que siempre se me olvida
00:25:43
Vamos a subir
00:25:44
La máquina virtual
00:25:46
Esto no es que sea crítico
00:25:48
La gran mayoría de las cosas que hacemos
00:25:51
Están soportadas en 1.8
00:25:53
Pero puede que algunas no
00:25:55
Entonces como
00:25:58
Estamos usando la última versión de todo
00:25:59
Pues venga
00:26:01
Yo voy a cambiar a la
00:26:02
Última mía
00:26:05
Aunque ahora ya tengo la 22
00:26:07
Ah perdón, este clip si igual no coge la 22
00:26:09
Vale
00:26:11
Y esto de aquí
00:26:18
En el
00:26:32
Web Developers
00:26:36
Que descargamos el otro día
00:26:39
Ya no me sale el POM rojo
00:26:40
Aunque esto no tenga la S
00:26:43
En el que
00:26:45
Es el primero en el que me ha pasado
00:26:48
Que ya no me salga
00:26:50
El plugin de Maven
00:26:52
Por lo que sea te cambia
00:26:55
Alguna versión que hay por aquí
00:26:56
Y en esa versión ya no sale ese error
00:26:58
No lo sé
00:26:59
Bueno pero no estás en el de Web Developers
00:27:00
No
00:27:05
Por eso, que a mí en el primero el que me he encontrado
00:27:06
Que no me sale es el de web developers del 25
00:27:08
Vale, pues nada, entonces
00:27:10
Dependencia
00:27:14
Ya sabemos cuál vamos a usar
00:27:15
Uy, estoy en
00:27:17
Sí
00:27:19
Nos vamos aquí al
00:27:19
Al repositorio
00:27:24
Uy, qué malo, aquí
00:27:28
Y ahora la palabra clave la tenemos
00:27:29
Que es
00:27:33
Esta
00:27:34
la palabra clave
00:27:41
la tenemos
00:27:43
pues esta
00:27:44
datavine
00:27:50
lo de tools
00:27:55
no lo había
00:28:04
venga, vamos a probar con esta
00:28:04
de axon core
00:28:07
la segunda que sale, espérate
00:28:09
si yo pongo esto
00:28:11
no, pero esta no
00:28:14
no, venga
00:28:26
vamos a probar con esto primero de aquí
00:28:28
y si no, pues
00:28:31
vale
00:28:33
es que claro
00:28:34
es
00:28:43
octubre, 22 de octubre
00:28:43
estas cosas que hacemos, en realidad no las
00:28:47
hacemos bien, o sea, tiramos por
00:28:49
defecto de lo
00:28:51
que se subió hace una semana
00:28:52
y normalmente uno trabaja
00:28:55
con arquitecturas que están ya más consolidadas
00:28:57
pero bueno, vamos a probar con esto y si no, ponemos
00:28:59
la dependencia que tengo yo en mis proyectos
00:29:01
y ya está
00:29:03
la cogí de aquí también
00:29:04
Venga, vamos a lanzarnos a esto
00:29:07
Ala
00:29:10
Y ahora
00:29:17
He cogido
00:29:31
Jackson Core
00:29:34
Core me suena pues al núcleo de
00:29:41
Si, he cogido lo último
00:29:43
Que me ha salido el Jackson Core
00:29:48
No, pero porque
00:29:50
No está sonando correcto
00:29:55
Vale, vamos a ver que
00:29:59
Dependencia nos han salido
00:30:01
Jackson Core, uff
00:30:03
es que esto ha cambiado mucho el nombre, es muy raro
00:30:06
bueno, vamos a ver si con estas
00:30:09
me vale, y si no
00:30:11
habrá que seguir buscando
00:30:12
recordad que si se os vuelve loco alguna vez
00:30:14
insiste en sacar errores
00:30:23
de que ha perdido rutas
00:30:25
siempre podéis
00:30:26
hacerle un
00:30:28
un actualizar
00:30:30
el proyecto
00:30:33
¿vale?
00:30:34
¿vale?
00:30:36
porque hay veces, cuando haya tantas dependencias
00:30:39
y tantos líos, hay veces que pierde
00:30:42
el class path, ya se desvirtúa
00:30:44
entonces actualizando
00:30:46
proyecto
00:30:48
con maven, actualizar proyecto
00:30:49
pues las rutas rotas
00:30:51
te las reconstruye, te recompila todo
00:30:54
porque hay veces que salen
00:30:56
cosas rojitas y dices, no tengo ni idea de donde salen
00:30:58
si es que está todo bien
00:31:00
está todo bien
00:31:01
esos rojos que salen estando todo bien
00:31:02
es porque se ha roto alguno de los
00:31:06
enlaces de las librerías
00:31:08
también siempre una cosa
00:31:10
buena
00:31:20
que en caso de desesperación cuando uno se le
00:31:21
rompe todo y le empiezas a ir rojo
00:31:24
cuando ya uno ha probado mil dependencias, las ha quitado
00:31:26
ha probado mil cosas para que funcionen
00:31:28
ha incorporado mil librerías, las ha vuelto a quitar
00:31:30
llega un momento en que ya
00:31:32
se ha vuelto loco
00:31:34
el eclipse y ya
00:31:36
no sabe ni que claspas tiene, cual no, ha roto
00:31:38
algunos, en algunos ha generado
00:31:40
los compilados y en otros no
00:31:42
pues una cosa que
00:31:44
muchas veces hace magia maravillosa
00:31:46
es en proyecto
00:31:48
¿vale?
00:31:50
esta
00:31:53
a ver, tenemos dos cosas
00:31:53
primero, caso de desesperación
00:31:57
me sale rojo
00:32:00
y no se debe a que
00:32:01
tenga yo errores en compilación
00:32:02
o que me falten dependencias, lo tengo todo
00:32:05
pero aún así el eclipse me dice que le falta
00:32:07
algo, eso suele deberse
00:32:09
a que le falta
00:32:11
a que no encuentra clases compiladas
00:32:12
en algún sitio donde debería, según el
00:32:16
Clashpad. Suele deberse siempre a eso.
00:32:18
Él necesita una clase
00:32:20
compilada, un punto clase en alguna parte
00:32:22
y ya la ha perdido. Con tanto
00:32:24
desmadre de incorporar, soltar, incorporar,
00:32:25
soltar, ya lo ha perdido.
00:32:28
Entonces, ahí conviene
00:32:30
recompilar todo de nuevas para que
00:32:31
todas las rutas ya se llenen
00:32:34
correctamente con lo que tienen que tener.
00:32:35
Bueno, pues en ese caso de desesperación,
00:32:37
tanto el actualizar el
00:32:40
proyecto Maven
00:32:41
y aquí
00:32:42
que también lo podéis hacer aquí
00:32:45
con botón derecho, Maven o
00:32:47
Date Project, como el
00:32:49
Clean, este
00:32:51
el Clean te dice, venga
00:32:53
¿qué proyecto quieres limpiar? Estoy desesperada
00:32:55
quiero limpiar este
00:32:57
pues te reconstruye un poquito, te recompila
00:32:58
todo, te hace cosas mágicas
00:33:02
y en muchas veces
00:33:03
después de llevar
00:33:05
varias horas diciendo, esto no tiene ningún
00:33:07
sentido, pum, haces un Clean y dices
00:33:09
Pero sí, ya está todo, todo arreglado
00:33:11
¿Por qué no lo habré hecho antes?
00:33:13
¿Vale?
00:33:16
Bueno
00:33:17
Vale, pues entonces
00:33:18
Esto que me ha importado aquí
00:33:21
Es que no me gusta nada, pero bueno, vamos a probar
00:33:23
Igual es que la versión del 22 de octubre
00:33:26
Se llama Tools y ya está
00:33:27
Pero bueno, vamos a probar
00:33:29
Si no, nos vamos a una anterior y listo
00:33:31
Vamos a hacer un JSON
00:33:33
Cualquerucho, normalucho
00:33:36
Venga, a ver
00:33:38
Lo podría hacer en cualquier lado
00:33:40
Vamos a hacerlo en el raíz para no arrastrar la ruta
00:33:43
Porque ya sabemos de memoria
00:33:45
En los files
00:33:47
Cómo poner la ruta para abrirlos
00:33:49
Si están fuera de mi proyecto
00:33:51
Entonces lo vamos a hacer aquí
00:33:52
Y nos ahorramos problemas
00:33:54
Pues te haces un nuevo fichero
00:33:56
Te vas al raíz, nuevo fichero y ya está
00:34:04
Venga
00:34:06
Esta va a ser mi información
00:34:08
La mía
00:34:11
Yo soy mi alumno
00:34:12
Pepit
00:34:13
Vale
00:34:14
Vale, pues esto sería
00:34:17
Un JSON válido
00:34:23
Porque tiene un objeto
00:34:24
Y aquí, pues que
00:34:27
Vale, cada uno ponga la información
00:34:32
Que le dé la gana, esto es un objeto instanciado
00:34:37
Vale
00:34:40
Para no volvernos
00:34:41
Muy locos, pues instituto
00:34:46
Instituto
00:34:48
Va a ser
00:34:49
Y aquí este objeto mío ya se ha terminado y ahora tengo, pues por ejemplo, módulos.
00:34:51
Aquí, módulos va a ser un array de objetos.
00:35:27
El primero, nombre, pues acceso a datos y nota, pues un 10.
00:35:31
Y otro módulo
00:35:46
Tengo por ahí
00:35:48
Procesos
00:35:48
Procesos
00:36:00
Vale
00:36:01
Este es un JSON válido
00:36:04
Uy, bueno, me falta la llave de cierre
00:36:08
¿Verdad que sí?
00:36:10
Vale
00:36:13
Este es un JSON válido que tiene un único objeto
00:36:13
Pero también sería un JSON válido
00:36:16
Un array
00:36:19
Con muchos de estos
00:36:20
¿Vale?
00:36:22
también sería un JSON
00:36:23
válido, un array con muchos de estos
00:36:25
y aquí no hay
00:36:27
esquema, ni hay nada
00:36:29
de eso, o sea, un segundín
00:36:31
aquí no hay esquema, cada objeto puede ser
00:36:33
de su padre, de su madre, de quien le dé la gana
00:36:35
en alguno le pueden faltar
00:36:38
propiedades que el otro tiene, aquí no
00:36:39
hay esquemas que validar, ni hay nada
00:36:41
¿vale? dime
00:36:43
¿por qué es un array? el valor
00:36:44
de la clave módulos es un array
00:36:49
y un array se hace entre corchetes
00:36:51
con los elementos separados por con.
00:36:53
Perdón, que este sí solo tiene dos.
00:36:55
Y a su vez,
00:36:58
los elementos del array, yo en este caso
00:36:59
he hecho que sean objetos, pero podría ser
00:37:01
un valor sencillo, una cadena,
00:37:03
un número, ¿vale? Dime.
00:37:05
¿Por qué hacía un corchete?
00:37:08
¿Pengo los corchetes?
00:37:10
No. Ah, que me da una llave.
00:37:12
Tengo la llave que me cierra este objeto,
00:37:14
este corchete que me cierra
00:37:16
este array, esta llave que me cierra
00:37:17
el valor instituto,
00:37:20
No, pero está cerrada por la llave de en medio
00:37:21
La de la coma
00:37:24
El de nombre localidad
00:37:25
En el medio
00:37:28
A ver, que lo mire aquí
00:37:29
Que ahí no veo nada, vamos a ver
00:37:32
A ver
00:37:34
Instituto
00:37:35
Ah, vale, vale
00:37:38
Que los módulos no están dentro del instituto
00:37:40
Vale, vale, vale
00:37:42
Entonces, el array
00:37:43
Se cierra aquí, con lo cual este objeto
00:37:45
Esta llave sobra, vale
00:37:48
Vale. Bueno, pues este es mi JSON. Pues, entonces, aquí lo normal, lógicamente, es trabajar con un modelo de objetos. No es necesario. Jackson puede parsear esto a object o a map de object y tú vas sacando de ahí.
00:37:49
Pero no es la forma de trabajo habitual
00:38:22
O sea, esto lo podría
00:38:25
Parsear a un map
00:38:26
Porque son pares clave de valor
00:38:27
A un map de object
00:38:31
¿Vale?
00:38:32
Lo podría parsear a un map
00:38:34
De string object, perdón
00:38:36
Esto se podría parsear a un map
00:38:39
Directamente
00:38:41
Donde los elementos del map serían
00:38:42
Clave nombre, el object valor esto
00:38:44
Clave instituto, el object
00:38:47
Valor todo esto
00:38:49
es decir, el map sería de string
00:38:50
object, donde cada
00:38:53
object sería cualquier cosa
00:38:54
aquí sería una lista
00:38:56
de elementos, aquí sería un objeto
00:38:58
aquí sería un string
00:39:00
pero bueno, parsear a map
00:39:02
object, ir entrando en el
00:39:04
object para ir haciendo casting
00:39:06
en función de lo que sea, pues bueno, es la forma
00:39:08
de trabajo habitual
00:39:10
no vamos a entrar por ahí, ¿vale? pero bueno
00:39:12
podríamos directamente no tener
00:39:14
ningún modelo en nuestra aplicación
00:39:16
pero vamos a hacerlo en modelo
00:39:18
Vamos a hacerle un modelo. Entonces, el modelo aquí implicaría que yo tengo mi clase alumno. Y aquí en el modelo yo tendría mi clase alumno y mi clase alumno pues tendría sus propiedades string nombre e instituto, instituto.
00:39:20
Y tendría también el que
00:39:53
Pues una lista
00:40:17
De módulos
00:40:18
¿Verdad? Instituto y una lista
00:40:23
De módulos
00:40:25
Getter y setter, por ahora dejamos
00:40:27
Constructores, tu string, todo eso por ser rápidos
00:40:40
Si nos hacen falta
00:40:43
Más adelante los ponemos
00:40:44
¿Vale?
00:40:46
Dime
00:40:48
Nada que te quede directamente
00:40:48
El punto JSON
00:40:52
Dentro de la distribución JDK
00:40:53
Que no sea a través de una dependencia
00:40:59
Como JSON, FasterXML
00:41:01
Porque lo que vamos a hacer ahora
00:41:03
Es precisamente lo que me estás diciendo
00:41:04
Pero con Jackson
00:41:05
Claro, pero me refiero
00:41:06
Tú haces un objeto
00:41:07
Y tienes un método
00:41:08
Y ese método te crea un JSON
00:41:11
Básicamente
00:41:14
A ver
00:41:15
Tú tienes un objeto
00:41:17
Para que ese objeto tenga un método
00:41:19
Tienes que haberlo metido ahí
00:41:21
O ser de object
00:41:22
¿No?
00:41:23
Entonces tú puedes hacer ahí un método
00:41:24
Pero dentro de ese método
00:41:26
Tendrás que llamar a Jackson para hacer eso
00:41:27
O sea, Jackson tiene un método que te coge un objeto
00:41:29
Y te lo pasa a Jason
00:41:31
Pero lo tiene Jackson
00:41:32
Este objeto alumno
00:41:34
Solo tiene lo que tú le pongas ahí o lo he heredado de object
00:41:37
Y no hereda nada de object
00:41:39
Jackson
00:41:41
Jackson o Jason
00:41:49
Son todos los frameworks que hay
00:41:52
Que lo hacen
00:41:53
Si te refieres a si el JDK
00:41:54
Te trae ya algo que integre eso
00:42:00
O sea, lo tienes
00:42:01
O usas Jackson, o usas Gison
00:42:04
O usas otras librerías que hay
00:42:07
A ver, paramos un segundín
00:42:09
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Segundo Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 7
- Fecha:
- 25 de noviembre de 2025 - 13:46
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 42′ 17″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 182.05 MBytes