FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
TJsonArray con corchetes de más
Buenos días, tardes, noches... a todos segun corresponda.
Hoy vengo a plantear un caso y saber si a ustedes les ha pasado esto y si lo han solucionado de alguna manera diferente. Tengo Un DataSnap Server al cual me conecto por medio de su TDSHTTPService utilizando sus cualidades REST por medio de JSon. En algun momento he necesitado compartir imagenes, archivos o en fin cualquier TStream, así que tengo una función en el server, parecida a esta, que devuelve el TStream serializado como TJsonArray, así:
Básicamente lo que hace es cargar un archivo y devolverlo serializado en un TJsonArray de enteros, que debería verse así, por ejemplo: Código:
[1, 5, 7, 8, 9...] Código:
[[1, 5, 7, 8, 9...]]
Por lo que si hago una "chapuza" (Como la siguiente) para quitar de la cadena de texto recibida ese corchete incial y final de más... pues me muestra la imagen y todo aparenta estar bien, pero no es algo optimo ya que es un paso de más que finalmente afectará el rendimiento de la aplicación cliente:
La duda finalmente es, ¿Qué debería hacer para que el server me devuelva de manera natural y sin este tipo de "chapuzeras" correctamente el TJsonArray, sin esos corchetes de más? Por su tiempo y atención, muchas gracias
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#2
|
||||
|
||||
Ni idea. Pero más que pensar que te está insertando corchetes extra piensa que te está devolviendo un arreglo cuya única entrada es el arreglo que esperas. Quizá así tengas más idea de porqué lo hace y en lugar de quitar los corchetes extra simplemente toma el primer elemento del arreglo devuelto que, como dije, será el arreglo que esperabas.
// Saludos |
#3
|
||||
|
||||
Cita:
Ahora, a ver en el server el asunto, gracias de nuevo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#4
|
||||
|
||||
¡Qué bueno que te haya servido! Para mi, esto que pones es contra natura Todo el delphi actual lo es
De entrada, veo DBX. ¿Eso se refiere a DBExpress? Y, si es así, ¿por qué DBExpress implementa métodos para convertir streams a formato JSon? // Saludos |
#5
|
||||
|
||||
Cita:
Bueno, es que en principio el DataSnap está basado en bibliotecas DBExpress, pero a medida del tiempo han ido vinculando todas estas funcionalidades de REST, por lo que han ido vinculando nuevas unidades expecificas para tal uso, pero en algunos casos como en este siguen en aquellas unidades, supongo que por simple referencia. Aunque es sólo mi apreciación, es muy probable que esté equivocado.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#6
|
||||
|
||||
Cita:
Tanto JSon, como streams son cosas independientes de DataSnap. Entonces, ¿qué pitos toca DataSnap implementando estas conversiones? No es su tarea. Es decir, las bibliotecas de Delphi se han convertido en mounstruos hacelo-todo // Saludos |
#7
|
||||
|
||||
Oe, y no es mas logico devolver binarios usando base64??
__________________
El malabarista. |
#8
|
||||
|
||||
Cita:
Cita:
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#9
|
||||
|
||||
La razon es que ese es el medio mas usado para transmitir informacion binaria por http, y es un estándar en eso desde hace rato:
https://es.wikipedia.org/wiki/Base64 Ademas, estoy casi seguro (porque no se como seran tus datos ) que debe ser mas pesado pasar por cada integer que en base64 (u otro encoding especializado en binarios), y es mas "natural", osea, un valor=un binario. Ahora si asi te da ok. Puede que con compresion salga bien...
__________________
El malabarista. |
#10
|
||||
|
||||
Cita:
De hecho Embarcadero recomienda usar el método anterior (TDBXJSONTools.JSONToStream) únicamente en llamadas asincronas y si el flujo de información no es muy alto.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ Última edición por jhonny fecha: 11-10-2015 a las 07:29:18. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Los corchetes de Eduarcol | JoseFco | La Taberna | 44 | 15-08-2008 12:19:55 |
|