1. JOSE WILLIAM ROMERO OLIVOS
  2. PowerBuilder
  3. Tuesday, 28 November 2023 21:40 PM UTC
Best regards, gentlemen.

If anyone can help me with this issue, I would appreciate it. I want to generate a json with JsonGenerator (I don't know if it is the correct tool), which contains an array of data, and I require guidance.

this is my code for the moment
JsonGenerator lnv_JsonGenerator
string ls_Json
Long ll_RootObject
Long ll_ChildObject

lnv_JsonGenerator = create JsonGenerator

// Create an object root item
ll_RootObject = lnv_JsonGenerator.CreateJsonObject()


dw_transaccion.settransobject(sqlca)
dw_transaccion.retrieve(idDocumento)

if dw_transaccion.rowcount() <> 1 then
Messagebox("Terrasoft - Mensaje","Error al generar Datos relativos a la transacción : Valor de registros " + string(dw_transaccion.rowcount()),stopsign!)
return 0
end if;

dw_transaccion.accepttext( )

numDocumentoldObligadoValue = dw_transaccion.object.ips_numdocumentoldobligado[1]
numFacturaValue = dw_transaccion.object.vfct_gestion_documentos_numfactura[1]

lnv_JsonGenerator.additemstring(ll_RootObject,numDocumentoldObligadoLabel,numDocumentoldObligadoValue)
lnv_JsonGenerator.additemstring(ll_RootObject,numFacturaLabel,numFacturaValue)
setnull(TipoNotaLabelValue)
lnv_JsonGenerator.additemnull(ll_RootObject, TipoNotaLabel)
setnull(numNotaValue)
lnv_JsonGenerator.additemnull(ll_RootObject,numNotaLabel)

ls_Json = lnv_JsonGenerator.GetJsonString()

destroy lnv_JsonGenerator

This generates that json, which is correct.

{
    "numDocumentoldObligado": "9002319816",
    "numFactura": "FVD243",
    "numNota": null,
    "TipoNota": null
}

What I need now is to be able to use a datawindow that contains the list of clients with their properties, and add that arrangement to the json, as follows:

{
	"numDocumentoldObligado": "9002319816",
    "numFactura": "FVD243",
    "numNota": null,
    "TipoNota": null,
    "clients": [
        {
            "birthDate": "2000-01-01 08:10",
            "codCountry": "170",
            "codSexo": "M",
            "codZonaTerritorialResidencia": "01",
            "consec": 1,
            "id": "52100200",
            "nameClient": "William Romero"
        },
        {
            "birthDate": "2000-01-01 08:10",
            "codCountry": "171",
            "codSexo": "F",
            "codZonaTerritorialResidencia": "01",
            "consec": 1,
            "id": "5545654",
            "nameClient": "Maria Romero"
        }
    ]

}

 

I bring the data from a data window, and I go through the data window with a for loop to obtain the customer data.

My question is how do I build that array and add the data to the json?

I appreciate your great help.
JOSE WILLIAM ROMERO OLIVOS Accepted Answer Pending Moderation
  1. Tuesday, 28 November 2023 22:51 PM UTC
  2. PowerBuilder
  3. # 1
Thanks for the reply. What happens is that within each client, I must then place an arrangement or objects of the products and services that that client has.

The final json product would have this structure

bill{}
     customer[{ }]
         service{}
             product1[{}]
             product2[{ }]
              productx[{ }]
     
So I don't know if it can be done by exporting the data window, or if everything really has to be done by code.
Comment
  1. Chris Pollach @Appeon
  2. Tuesday, 28 November 2023 23:56 PM UTC
For a complex nested structure like that, you will definitely need to use the JSONGenerator object.
  1. Helpful
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Tuesday, 28 November 2023 22:27 PM UTC
  2. PowerBuilder
  3. # 2

Hi Jose;

  If you just want pure JSON from your data loaded in a DataWindow or DataStore primary buffer - why not just use the ExportJSON ( ) command?

Regards ... Chris

Comment
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.
We use cookies which are necessary for the proper functioning of our websites. We also use cookies to analyze our traffic, improve your experience and provide social media features. If you continue to use this site, you consent to our use of cookies.