1
00:00:00,090 --> 00:00:06,000
Continuamos con esta segunda parte procesar las anotaciones del objeto bien field.

2
00:00:06,240 --> 00:00:11,730
Pero tenemos un arreglo claro son varios campos que tenemos que recorrer del objeto bueno, utilizando

3
00:00:11,730 --> 00:00:13,590
el API de reflexión de Java.

4
00:00:13,800 --> 00:00:16,770
Vamos a importar fiel de Yeva Lang refracta.

5
00:00:19,720 --> 00:00:30,610
Atributos o campos como lo queramos llamar el objeto, en este caso producto P punto get class punto

6
00:00:30,700 --> 00:00:37,900
get declarad field de acá obtener campos declarados que retorna el arreglo de field acá.

7
00:00:38,680 --> 00:00:41,650
Entonces invocamos el método punto y coma.

8
00:00:42,430 --> 00:00:42,970
Continuamos.

9
00:00:43,030 --> 00:00:49,120
Vamos a utilizar el API Stream para que sea un poco más fluido con programación funcional.

10
00:00:49,210 --> 00:00:56,590
Bueno, todo lo que hemos visto entonces a raíz puntó stream y pasamos atributos.

11
00:00:57,940 --> 00:00:58,270
Listo.

12
00:00:58,400 --> 00:01:01,030
Ahí tenemos nuestro stream de campos.

13
00:01:01,210 --> 00:01:03,430
Bueno, lo primero es filtrar.

14
00:01:03,610 --> 00:01:09,550
La idea es filtrar todos estos atributos o al final convertir este flujo solamente a los atributos que

15
00:01:09,550 --> 00:01:10,540
estén anotados.

16
00:01:11,140 --> 00:01:15,690
Esa la idea, ya que no todos pueden tener la anotación Jetson atributo.

17
00:01:15,760 --> 00:01:22,870
No en este caso nombre precio, pero fecha no y así podríamos tener una lista larga de campos atributos

18
00:01:22,960 --> 00:01:28,540
que no estén anotados, pero me interesa procesar solamente lo que tengan este decorador.

19
00:01:29,640 --> 00:01:31,260
Pero usando filter.

20
00:01:31,830 --> 00:01:35,110
Así que por eso es muy simple utilizar el API Stream.

21
00:01:35,250 --> 00:01:42,230
Acá se emite el field, el campo, una opción Landa y preguntamos si este campo tiene esta anotación.

22
00:01:42,540 --> 00:01:43,620
F Punto.

23
00:01:43,800 --> 00:01:49,050
Bien, con get anoté Schön lo podremos preguntar, lo podemos palier porque obtenemos la anotación y

24
00:01:49,080 --> 00:01:54,510
preguntamos que sea distinto de NULL, porque si no la tiene va a devolver un nulo, pero si la tienes

25
00:01:54,510 --> 00:01:55,380
devuelve la instancia.

26
00:01:55,500 --> 00:01:57,070
Así que con qué anotacion?

27
00:01:57,240 --> 00:02:00,630
Puede ser, pero mucho mejor es anoté hecho en presente.

28
00:02:00,990 --> 00:02:07,740
Si la anotación está presente, entonces invocamos este método y pasamos por argumento el nombre de

29
00:02:07,740 --> 00:02:12,870
la anotación Watson atributo el nombre punto class.

30
00:02:13,560 --> 00:02:13,980
Listo.

31
00:02:14,120 --> 00:02:20,580
Entonces ahora va a filtrar todos los campos o atributos los field que tenga presente esta anotación.

32
00:02:20,700 --> 00:02:23,840
Es decir, que esté anotado con Jason atributo listo.

33
00:02:24,960 --> 00:02:26,190
Vamos a bajar acá.

34
00:02:27,120 --> 00:02:28,230
Continuamos con un mapa.

35
00:02:29,220 --> 00:02:36,810
Bueno, ahora tenemos solamente los campos anotados y lo vamos a convertir a un string, pero con estructura

36
00:02:36,960 --> 00:02:37,530
de Jackson.

37
00:02:38,790 --> 00:02:43,230
Bueno, para los que no saben una estructura, Jaison se utiliza mucho en JavaScript.

38
00:02:43,470 --> 00:02:48,600
Porque claro, con cliente http con framework del tipo frontend como Angular, como React.

39
00:02:48,720 --> 00:02:54,540
Trabaja mucho con Jackson porque parte del JavaScript, pero básicamente la estructura es el nombre

40
00:02:54,540 --> 00:02:56,160
del atributo en minúscula.

41
00:02:56,310 --> 00:03:03,030
2 punto el valor coma el segundo atributo, 2 punto el valor y así sucesivamente.

42
00:03:03,180 --> 00:03:05,400
Y tú estás encerrado con llaves.

43
00:03:05,520 --> 00:03:12,570
Necesitamos dos cosas primero, el nombre del campo o del atributo y el valor haciendo uso de reflexión.

44
00:03:12,870 --> 00:03:19,500
Lo primero string nombre, pero el nombre puede ser el mismo que tenga la clase de producto.

45
00:03:19,620 --> 00:03:22,020
O bien podríamos especificar acá.

46
00:03:22,110 --> 00:03:24,900
Recuerden que la anotación de es un atributo.

47
00:03:24,930 --> 00:03:29,760
Pusimos el atributo nombre por defecto acío de que es opcional.

48
00:03:30,600 --> 00:03:36,060
Entonces, por poner un ejemplo, acá podríamos haber puesto nombre en el Jetson.

49
00:03:37,080 --> 00:03:38,100
Descripción.

50
00:03:39,750 --> 00:03:47,130
Primero preguntar si existe y tiene valor el atributo nombre de la anotación y si no, si no tiene valor

51
00:03:47,940 --> 00:03:55,170
usar el nombre campo de FICAN, entonces usamos el nombre campo por defecto o bien descripción uno London.

52
00:03:56,610 --> 00:03:58,740
Bueno, para eso primero F.

53
00:03:58,830 --> 00:04:03,390
Punto, nyet, anoté Schön, le pasamos el nombre.

54
00:04:03,510 --> 00:04:03,930
Recuerdan?

55
00:04:04,050 --> 00:04:07,320
F Es el fiel del stream el campo.

56
00:04:07,710 --> 00:04:11,900
Acá pasamos Jackson atributo punto class.

57
00:04:12,360 --> 00:04:16,440
Con eso obtenemos la anotación y preguntamos nombre.

58
00:04:18,360 --> 00:04:22,230
El atributo nombre que el que tenemos acá se fijan, está acá.

59
00:04:23,290 --> 00:04:37,720
Si es igual, igual a vacío a nada, entonces vamos a asignar el nombre Campo Field punto Get name 2

60
00:04:37,720 --> 00:04:38,170
punto.

61
00:04:38,230 --> 00:04:41,140
Si no, recuerden que esto es un operador ternario.

62
00:04:42,070 --> 00:04:47,540
Similar a Life, entonces una prisión si se cumple esto, sino esto otro.

63
00:04:48,010 --> 00:04:50,680
Entonces si es vacío por defecto nombre campo.

64
00:04:50,740 --> 00:04:53,080
Si no, si no es vacío, es todo acá.

65
00:04:53,950 --> 00:04:57,220
El valor que contiene el atributo nombre de la anotación.

66
00:04:58,900 --> 00:04:59,800
Todo acá se fijan.

67
00:05:00,550 --> 00:05:07,410
Ya tenemos el nombre del campo en el Jackson o del atributo que faltaría el valor ratón.

68
00:05:07,810 --> 00:05:10,930
Recuerden que el MAP siempre devuelve el objeto modificado.

69
00:05:11,020 --> 00:05:16,270
En este caso vamos a convertir de un tipo field a un tipo String con la estructura Jaison.

70
00:05:16,420 --> 00:05:21,940
Recuerden que la estructura Yeison, como explicaba, es el nombre del atributo, pero siempre va con

71
00:05:22,030 --> 00:05:26,020
doble comillas, por ejemplo, doble comilla y acaba el nombre.

72
00:05:26,140 --> 00:05:31,150
En ese caso es todo acá, pero la comilla es parte del string.

73
00:05:31,270 --> 00:05:37,510
Entonces tengo que escapar, tengo que colocar una tercera comilla y acá es capás con pÃxeles.

74
00:05:38,270 --> 00:05:44,980
Bien, acá más nombre perfecto, más 2.2.1.

75
00:05:45,130 --> 00:05:49,600
Pero acá tenemos que cerrar esta comilla acá que enmarca al nombre.

76
00:05:49,870 --> 00:05:52,660
Entonces lo mismo hay que cavar acá.

77
00:05:52,750 --> 00:05:53,470
Escapamos.

78
00:05:55,030 --> 00:05:57,160
Y acá en el valor también va comilla.

79
00:05:57,430 --> 00:06:01,630
Entonces colocamos otra comilla acá, pero una sola, no dos.

80
00:06:02,230 --> 00:06:06,340
Y acá escapamos más el valor.

81
00:06:06,430 --> 00:06:10,960
Pero el valor lo tenemos con F del campo fiel punto inquieto.

82
00:06:11,440 --> 00:06:12,400
Y pasamos el objeto.

83
00:06:12,430 --> 00:06:13,030
Qué objeto?

84
00:06:13,030 --> 00:06:13,710
Producto?

85
00:06:15,210 --> 00:06:17,460
Acá nos va a pedir manejar exepción.

86
00:06:18,450 --> 00:06:20,250
Se fijan, marca un error y está bien.

87
00:06:20,400 --> 00:06:23,640
Acá nos pide manejar una acepción con el troi catch.

88
00:06:23,770 --> 00:06:28,500
Después vamos a ver, pero por ahora continuamos concatenados con la comilla.

89
00:06:28,800 --> 00:06:31,350
Acá tenemos que cerrar la comilla del valor.

90
00:06:34,470 --> 00:06:34,880
Listo.

91
00:06:35,100 --> 00:06:35,700
Punto y coma.

92
00:06:35,880 --> 00:06:39,420
Ahora sí que si trae catch anidar contra el cacho.

93
00:06:40,570 --> 00:06:45,320
Deto nombre trae Catch y acá devolvemos electric en el mapa.

94
00:06:45,550 --> 00:06:52,240
Entonces, finalmente convertimos el field, el campo del tipo field por un string que contenga la estructura

95
00:06:52,240 --> 00:06:58,720
Yeison, es decir, el nombre entre comillas dos puntos, el valor entre comillas y después cada uno

96
00:06:58,720 --> 00:07:00,190
lo vamos a separar por coma.

97
00:07:00,460 --> 00:07:02,260
Y todo eso dentro de llaves.

98
00:07:02,770 --> 00:07:08,590
Bien, pero en el catch como esta es una excepción que nos obliga, es decir, es chequeada, lo vamos

99
00:07:08,590 --> 00:07:14,380
a convertir a una excepción que no sea obligatoria, que no sea chequeada un reinte excepto entonces

100
00:07:14,400 --> 00:07:22,750
fru new ragtime excepto entonces en caso de error en el get hay liguen acces exception que después incluso

101
00:07:22,750 --> 00:07:26,950
este error va a ocurrir porque lo vamos a forzar para que ocurra, para que lo vean y después vamos

102
00:07:26,950 --> 00:07:27,490
a solucionar.

103
00:07:27,550 --> 00:07:28,600
Pero bien acá.

104
00:07:28,690 --> 00:07:30,400
Error al ser Elizardo Yeison,

105
00:07:34,450 --> 00:07:36,310
error al ralizar a Jaison.

106
00:07:36,550 --> 00:07:39,820
Dos puntos espacio exacto en punto.

107
00:07:39,940 --> 00:07:41,320
Get message esto.

108
00:07:42,340 --> 00:07:42,970
Talita el map.

109
00:07:46,020 --> 00:07:49,620
Vamos a aplicar un Redux para reducir todo el flujo.

110
00:07:49,710 --> 00:07:54,240
Todos los campos en una única salida con la estructura, Jaison se Reedus.

111
00:07:54,450 --> 00:08:01,400
Recuerden que el primer argumento acá vamos a colocar las llaves para abrir el Jaison y lo siguiente

112
00:08:01,420 --> 00:08:04,320
una prisión lanta del tipo VIF Antxón.

113
00:08:04,440 --> 00:08:09,390
Recuerden con tres generic los dos del argumento y el ratón.

114
00:08:09,480 --> 00:08:11,940
Entonces acá sería A Koma B.

115
00:08:13,050 --> 00:08:15,210
Y esta expresión lanta que devuelve un valor.

116
00:08:15,640 --> 00:08:22,680
Entonces las llaves y vamos a preguntar if si a es igual a la llave de apertura.

117
00:08:23,010 --> 00:08:27,540
Entonces cuál es a esto importante?

118
00:08:27,540 --> 00:08:34,110
Porque recuerde que la primera vez o cuando comienza la concatenación para reducir a un único elemento,

119
00:08:34,470 --> 00:08:36,750
ella va a tomar este valor.

120
00:08:36,930 --> 00:08:40,020
Cuando concatena con el siguiente va a ser este acá.

121
00:08:40,140 --> 00:08:46,680
Entonces, cuando a es igual a esto, no agregamos la coma porque no podemos colocar esto coma concatenado

122
00:08:46,680 --> 00:08:47,020
con B.

123
00:08:47,100 --> 00:08:50,820
No tiene que hacer esto con el primer elemento coma.

124
00:08:50,910 --> 00:08:56,010
El segundo elemento y la coma comienza después del primer elemento es 7 el primer elemento de flujo,

125
00:08:56,100 --> 00:08:57,180
no de la llave.

126
00:08:57,540 --> 00:09:03,790
Entonces acá cuando son iguales, simplemente concatenados a con b ratón, a más B.

127
00:09:04,860 --> 00:09:14,070
De lo contrario rotor a más la coma, un espacio más B y listo.

128
00:09:14,220 --> 00:09:17,910
Recuerden que el Redux devuelve un string, un único elemento.

129
00:09:18,360 --> 00:09:20,790
Entonces, como es un string junto con Cat.

130
00:09:23,290 --> 00:09:24,490
Aunque tengamos con el cierre.

131
00:09:26,090 --> 00:09:28,250
Se fijan, acá se abre y acá cerramos.

132
00:09:28,800 --> 00:09:33,490
Yo estoy molesto y todo esto es un string de Trent.

133
00:09:34,500 --> 00:09:35,060
Jason.

134
00:09:36,890 --> 00:09:42,350
Finalmente, South VI, el Jackson y yo estamos listo.

135
00:09:42,590 --> 00:09:44,820
Ahora, si ejecutamos, va a lanzar un error.

136
00:09:45,080 --> 00:09:47,210
Ya va a caer en esta sección.

137
00:09:47,660 --> 00:09:49,850
Va a decir error al ser realizare Jackson.

138
00:09:49,970 --> 00:09:50,480
Vamos a ver.

139
00:09:57,230 --> 00:10:00,590
Se fijan renta en exception error al realizar el Jaison.

140
00:10:00,950 --> 00:10:01,370
Por qué?

141
00:10:01,400 --> 00:10:07,910
Porque los campos, los atributos no son accesibles, no se pueden acceder porque son privados.

142
00:10:09,190 --> 00:10:09,860
Producto.

143
00:10:10,000 --> 00:10:15,220
Estos atributos son privados, entonces no se pueden leer, no se pueden acceder, es una protección

144
00:10:15,220 --> 00:10:15,640
que tiene.

145
00:10:16,150 --> 00:10:23,950
Entonces lo que podemos hacer acá es f.n серии accesible, lo dejamos dentro.

146
00:10:24,580 --> 00:10:30,410
Es decir que el campo, a pesar de que sea privat, lo podemos acceder mediante reflexión.

147
00:10:30,730 --> 00:10:33,100
Entonces ahora si que si ejecutamos.

148
00:10:36,120 --> 00:10:41,340
Y desaparece el error y se genera nuestro Yeison a partir del objeto se fijan.

149
00:10:41,440 --> 00:10:50,700
Descripción Entrecomillados Punto el valor entre precio entrecomillados punto el precio La fecha no

150
00:10:50,700 --> 00:10:52,290
aparece porque no está anotada.

151
00:10:52,320 --> 00:10:56,430
Se fijan y acá aparece descripción y no nombre.

152
00:10:56,580 --> 00:10:57,240
Por qué?

153
00:10:57,840 --> 00:11:04,230
Porque el nombre del campo en el Jetson por defecto es vacío y cuando es vacío toma el nombre del atributo

154
00:11:04,230 --> 00:11:04,860
de la clase.

155
00:11:05,160 --> 00:11:06,180
Por ejemplo, nombre.

156
00:11:06,480 --> 00:11:07,320
Pero si no vacío.

157
00:11:07,350 --> 00:11:12,660
Toma este nombre por defecto, entonces descripción Pero por ejemplo, si esto lo omitimos, lo quitamos.

158
00:11:12,780 --> 00:11:14,610
Fíjense bien, voy a quitar nombre.

159
00:11:15,030 --> 00:11:17,310
Vamos a ejecutar acá en ejemplo.

160
00:11:18,690 --> 00:11:20,040
Va a cambiar acá a nombre.

161
00:11:20,160 --> 00:11:21,990
Mismo nombre que la tribu, otra clase.

162
00:11:22,170 --> 00:11:22,590
Nombre?

163
00:11:25,460 --> 00:11:26,510
Incluso el precio.

164
00:11:29,910 --> 00:11:31,500
Costo en vez de precio.

165
00:11:31,620 --> 00:11:33,060
Quiero que Jackson sea costo.

166
00:11:36,170 --> 00:11:37,850
Acá cambia costo 12.

167
00:11:37,940 --> 00:11:44,360
Es súper robusta etapa nos permite procesar con metadata o con configuración, atributos, métodos,

168
00:11:44,420 --> 00:11:49,070
clases que están implementado, que están decorado con nuestras anotaciones.

169
00:11:49,450 --> 00:11:53,750
Bien, los paréntesis son opcionales cuando no definimos los atributos.

170
00:11:55,430 --> 00:11:57,230
Lo podría omitir ningún problema.

171
00:11:58,290 --> 00:12:04,770
Y para finalizar esto acá, cuando comparamos que el primer elemento, si es igual a llave, es simplemente

172
00:12:04,770 --> 00:12:09,990
que concatena y después, cuando sean los siguientes elementos, es decir, los elementos de flujo,

173
00:12:10,620 --> 00:12:12,210
concatena con Lacoma.

174
00:12:13,260 --> 00:12:14,880
Porque, por ejemplo, siento, lo omitimos.

175
00:12:16,820 --> 00:12:17,980
Fíjense lo que va a suceder.

176
00:12:19,880 --> 00:12:21,320
Va a colocar una coma al comienzo.

177
00:12:21,380 --> 00:12:24,920
Se fijan acá y no, eso no tiene que ser así.

178
00:12:25,460 --> 00:12:26,180
Control C.

179
00:12:28,670 --> 00:12:29,180
Yase.

180
00:12:31,850 --> 00:12:32,400
Nada más.

181
00:12:32,420 --> 00:12:34,490
Continuamos en la siguiente clase.
