PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 28 → Problema con estructura JSON
Problema con estructura JSON
Iniciado por Maurizio, 30,ene. 2024 23:11 - 1 respuesta
Publicado el 30,enero 2024 - 23:11
Hola, tengo una situacion al manejar estructuras JSON y quiero ver si alguien me ayuda a resolverlo.

Estoy leyendo un archivo HFSQL donde convierto a formato JSON unos datos:
--------------------
HExecuteQuery(REQ_detpreventas,hQueryDefault,gSEmpresaID,"a837244033280824d079875f2671ae8f6f27a6cceb42ba53284860c0e8946929")
dsMisDatos is Data Source
sMiSql is string = [
SELECT
codinv,
Preunivvta,
Debfis,
JSON_OBJECT('Codigo': codinv,'precio': Preunivvta,'iva':Debfis) AS JSONContent
FROM
REQ_detpreventas
]


Despues de leernos construyo la cadena con esos datos:
---------------
sMiStrJson is string = ""
HExecuteSQLQuery(dsMisDatos,hQueryDefault,sMiSql)
FOR EACH dsMisDatos
sMiStrJson += dsMisDatos.JSONContent
END


y luego lo muevo a la variable tipo JSON
------
MiJson is JSON
MiJson.billitems = "["+sMiStrJson+"]"


PROBLEMA:
------------
Cuando la mando a desplegar para verificar la estructura, ve que le esta agregando plecas invertidas y esta quedando asi:
{
"billitems":"[{ \"Codigo\" : \"T00298\" , \"precio\" : 0.75 , \"iva\" : 0.09 }{ \"Codigo\" : \"T00147\" , \"precio\" : 0.35 , \"iva\" : 0.04 }{ \"Codigo\" : \"T01173\" , \"precio\" : 1 , \"iva\" : 0.12 }]"
}

Como puedo hacer para que deje la estructura como tiene que ser? o sea como la de abajo?
[ "Codigo" : "T00298" , "precio" : 0.75 , "iva" : 0.09 }{ "Codigo" : "T00147" , "precio" : 0.35 , "iva" : 0.04 }{ "Codigo" : "T01173" , "precio" : 1 , "iva" : 0.12 }]
Miembro registrado
791 mensajes
Popularité : +40 (42 votes)
Publicado el 31,enero 2024 - 19:40
Hola. Quien te causa el problema es JSON_OBJECT ya que los caracteres especiales usados por el formato JSON como con las " te las cambia por \".

Los datos que conviertes a JSON los tienes en el SQL. ¿Porque no generas el JSON despues? Puedes usar para cada registro algo como

MiJson.billitems[<n>].Codigo = dsMisDatos.codinv
MiJson.billitems[<n>].Precio = dsMisDatos.Preunivvta
MiJson.billitems[<n>].Iva = dsMisDatos.Debfis

Rubén