anonymous Log in
Search
Recents:
v3.0
java-l
Como eliminar BACKSLASH de una salida JSON
06/11/20 22:11

javierfs

Replies: 13

Estoy confrontando problemas con un JSON.
Me entrega los datos pero me trae \ BACKSLASH.
¿Como puedo eliminar esto.?
Claro está que dentro de genexus el SDT o la variable varchar que utilizo
no tiene estos BACKSLASH
{
"ListaDeComerciosJson":
"{\"Comercio\":{\" 1\" :{\"id\": \" 1\", \"nombre\":
\"heytics\"},\" 1\" :{\"id\": \" 2\", \"nombre\":
\"Fedex\"},\" 1\" :{\"id\": \" 3\", \"nombre\": \"dhl\"},\"
1\" :{\"id\": \" 4\", \"nombre\": \"copa\"},\" 1\"
:{\"id\": \" 5\", \"nombre\": \"American Airlines\"},\" 1\"
:{\"id\": \" 6\", \"nombre\": \"UPS\"},\" 1\" :{\"id\": \"
7\", \"nombre\": \"Avianca\"},\" 1\" :{\"id\": \" 8\",
\"nombre\": \"Sixt\"},\" 1\" :{\"id\": \" 9\", \"nombre\":
\"Dannahs\"},\" 1\" :{\"id\": \" 10\", \"nombre\":
\"Nova\"},\" 1\" :{\"id\": \" 11\", \"nombre\": \"Disney
\"},\" 1\" :{\"id\": \" 12\", \"nombre\": \"Carters\"},\"
1\" :{\"id\": \" 13\", \"nombre\": \"Nautica\"},\" 1\"
:{\"id\": \" 14\", \"nombre\": \"Rock Auto\"},\" 1\"
:{\"id\": \" 15\", \"nombre\": \"Honda\"},\" 1\" :{\"id\": \"
16\", \"nombre\": \"Toyota\"},}}"
}
--
Javier Fernández Sánchez, PMP | Socio Director | SINEX Consulting –
GeneXus
*C*ertified *P*roject *M*anager *P*rofesional ID Number 469654
Tel: (507) 217-9168 | Cel: (507) 6671-1668 | javier.fernandez@sinexinc.com
<orlando.martin@sinexinc.com>
skype: javierfs@hotmail.com | www.sinexinc.com
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,20
Por consultas owner-java-l@gxtech.com.uy
Replies

leandro79337933

09/11/20 11:04
Hola Javier, donde ves eso? podrias enviar el codigo GX? Slds On Fri, Nov 6, 2020 at 7:35 PM Javier Fernández S. < javier.fernandez@sinexinc.com>

javierfs

09/11/20 13:27
Gracias por el interés. Con https://www.postman.com/ se revisa el resultado de json del REST. Y es lo que se presenta. El procedimiento es el siguiente. REGLA parm(out:&ListaDeComerciosJson); SOURCE &ComercioSDTJson = New() for each Comercio &ComercioSDTJsonItem = new() &ComercioSDTJsonItem.ComercioID = ComercioId &ComercioSDTJsonItem.ComercioNombre = ComercioNombre &ComercioSDTJson.Add(&ComercioSDTJsonItem) endfor &ListaDeComerciosJson = &ComercioSDTJson.ToJson() El procedimiento está especificado así: [image: image.png] Pudieran hacer una prueba y verificar el resultado. Como ven no es complicado pero el resultado tiene backslash. Saludos El lun., 9 nov. 2020 a las 6:04, Leandro Minatel ()

pbancoff@gmail.com

11/11/20 11:44

Hola estoy teniendo el mismo problema con un WebServices REST en Gx17 tomcat 9, quisiera ver si pudieron encontrar la solución.

Gracias

Saludos

pbancoff@gmail.com

11/11/20 11:47

Hola,  estoy teniendo el mismo problema generando un WebService REST con Gx17 y tomcat 9.

Quisiera saber si pudieron solucionar.

Gracias

Saludos

leandro79337933

13/11/20 15:42
Hola Javier, perdón por la demora en la respuesta, tuve una semana agitada.... Varios temas: 1- En la primer línea del SOURCE tenes: &ComercioSDTJson = New() Imagino que este debe ser el "SDT Collection" que tendrá los registros de la tabla. En ese caso, no es necesario el New(). 2- El bloque del For Each/Endfor esta perfecto. 3- La última línea del SOURCE es la que hace el ruido. no se que tipo de dato es &ListaDeComerciosJson, imagino que un VarChar. Si es así, GeneXus lo que hace es convertir los parametros de salida en un JSON. O sea, te va a armar algo asi: {"ListaDeComerciosJson": "contenido_variable_ListaDeComerciosJson"} Como la variable &ListaDeComerciosJson es una String con un JSON adentro, GeneXus tiene que meterlo adentro de otro JSON y tiene que "escapar" las dobles comillas para que sea un JSON valido. Lo que yo haria es devolver el SDT Collection directamente sin ponerlo adentro de una String: Parm(out: &ComercioSDTJson ); GeneXus va a armar un JSON asi: { "ComercioSDTJson": [ {"Id":"1", "nombre":"heytics"}, {"Id":"2", "nombre":"Fedex"}, {"Id":"3", "nombre":"dhl"} ...... ] } Slds On Mon, Nov 9, 2020 at 10:53 AM Javier Fernández S. < javier.fernandez@sinexinc.com>

leandro79337933

13/11/20 15:44
Ah, un detalle mas, cuando lo definis como "Expose as a Web Service" en True, *no es necesario *que le indiques que tiene que ser main program. Hace mucho habia que hacerlo, pero no recuerdo desde que version no es necesario. Queda mas lindo ya que no le pone la "a" adelante. Slds On Fri, Nov 13, 2020 at 12:42 PM Leandro Minatel

javierfs

13/11/20 17:46
Muchas gracias El vie., 13 de noviembre de 2020 10:44 a. m., Leandro Minatel < leandro@minatel.com.ar>

javierfs

13/11/20 17:47
Muchas gracias El vie., 13 de noviembre de 2020 10:42 a. m., Leandro Minatel < leandro@minatel.com.ar>

javierfs

13/11/20 19:16
Listo Ya se probó. Todo bien muchas gracias. El vie., 13 nov. 2020 a las 12:47, Javier Fernández S. (< javier.fernandez@sinexinc.com>)

leandro79337933

13/11/20 19:17
👍 On Fri, Nov 13, 2020 at 4:16 PM Javier Fernández S. < javier.fernandez@sinexinc.com>

pbancoff@gmail.com

13/11/20 20:04
Hola yo, estoy teniendo el mismo problema, revise con la solución que pasaron pero no tengo la misma situación, o no me doy cuenta les paso parte del codigo. Rules PARM(IN:&Mifare, OUT:&SDTRespuesta); &SDTRespPersonal.Clear() For Each &SDTRespPersonal_Item=New SDTRespPersonal() &SDTRespPersonal_Item.Mifare=NroDeMifare.ToString() &SDTRespPersonal_Item.Apellidos=APELLIDO1.Trim() &SDTRespPersonal_Item.Nombres=NOMBRE1.Trim() &SDTRespPersonal.Add(&SDTRespPersonal_Item) &TodoOK=True When None &TodoOK=False &MsgError='ERR-0004' Endfor IF &TodoOK=True &SDTRespuesta_Item= new SDTRespuesta() &SDTRespuesta_Item.StatusRespuesta="OK" &SDTRespuesta_Item.JsonRespuesta=&SDTRespPersonal.ToJson() &SDTRespuesta.Add(&SDTRespuesta_Item) Else &SDTRespuesta_Item= new SDTRespuesta() &SDTRespuesta_Item.StatusRespuesta=&MsgError &SDTRespuesta_Item.JsonRespuesta=&SDTRespPersonal.ToJson() &SDTRespuesta.Add(&SDTRespuesta_Item) EndIf Gracias El vie., 13 nov. 2020 a las 16:16, Javier Fernández S. (< javier.fernandez@sinexinc.com>)

PpGallo

13/11/20 20:44
El problema radica en esta parte &SDTRespuesta_Item.JsonRespuesta=&SDTRespPersonal.ToJson() Quieres asignar un JSON a un Varchar y posterior el servicio regresa un JSON Lo que se hace internamente es codificar caracteres especiales en el JSON por eso te aparece el BACKSLASH Saludos

pbancoff@gmail.com

18/11/20 19:36

yesPpGallo voy a intentar solucionarlo por ese lado.



Back to java-l