Inspirado pela postagem de @Ashok Kumar Thangavel no portal de ideias aqui, bem como pelos meus próprios desejos de uma solução para este problema, criei uma maneira simples de permitir consultas JSON mais completas e consistentes sem ter que especificar cada campo desejado. Desenvolvi uma classe que estende a classe integrada %JSON.Adaptor e torna seus métodos %JSONExportToString e %JSONExportToStream acessíveis através de SQL com apenas alguns métodos SqlProc simples.
Class DH.JSONAdaptor Extends %JSON.Adaptor [ Abstract ]
{
ClassMethod jsonstring(id, map = "") [ SqlProc ]
{
try{
set myobj = ..%OpenId(id)
set sc = myobj.%JSONExportToString(.json,map)
if $$$ISERR(sc) $$$ThrowStatus(sc)
return json
}
catch ex{
throw ex
}
}
ClassMethod jsonstream(id, map = "") [ SqlProc ]
{
try{
set myobj = ..%OpenId(id)
set sc = myobj.%JSONExportToStream(.json,map)
if $$$ISERR(sc) $$$ThrowStatus(sc)
return json
}
catch ex{
throw ex
}
}
}
.jpg)







