Dúvida JsonObject - Retornar Array

Boa tarde

Como retornar um array usando o JsonObject?

Por exemplo, consigo preencher os retornos STATUS e ERRO com strings. Porém se eu quiser retornar um array ? (Print em anexo)

Local objRet := JsonObject():new()

objRet["STATUS"] := "true" objRet["ERRO"] := "Deu certo"objRet["DADOS"] := //Retornar um array AQUI

retorno := objRet:toJson() ::SetResponse(retorno)

Obrigado

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Thyago,

A propriedade DADOS do seu JSON é um array de objetos, logo, você vai ter um array com diversos JsonObject.

Existem inúmeras formas de criar um array de objetos (JsonObject), abaixo alguns exemplos de como pode ser feito:


// ----------------------------------------------------------------------
/*/{Protheus.doc} u_jsonArray
Exemplo de JsonObject com array

@author Daniel Mendes
@since 25/05/2021
@version 1.0
/*/
// ----------------------------------------------------------------------
function u_jsonArray()
local jJson as json
local jJsonData as json
local nI as numeric
local aDados as array

//Exemplo 1
jJson := JsonObject():new()
jJson["STATUS"] := "true" //Isso aqui poderia ser um .T. para ficar como um tipo boolean
jJson["ERRO"] := "Deu certo"
jJson["DADOS"] := {}

jJsonData := JsonObject():new()
jJsonData["DATAINI"] := Date()
jJsonData["DATAFIM"] := Date() + 1

aAdd(jJson["DADOS"], jJsonData)

jJsonData := JsonObject():new()
jJsonData["DATAINI"] := Date() + 2
jJsonData["DATAFIM"] := Date() + 3

aAdd(jJson["DADOS"], jJsonData)

jJsonData := JsonObject():new()
jJsonData["DATAINI"] := Date() + 4
jJsonData["DATAFIM"] := Date() + 5

aAdd(jJson["DADOS"], jJsonData)

ConOut( jJson:toJson(), "" ) //{"STATUS":"true","DADOS":[{"DATAINI":"2021/05/25","DATAFIM":"2021/05/26"},{"DATAINI":"2021/05/27","DATAFIM":"2021/05/28"},{"DATAINI":"2021/05/29","DATAFIM":"2021/05/30"}],"ERRO":"Deu certo"}

//Exemplo 2
jJson := JsonObject():new()
jJson["STATUS"] := "true" //Isso aqui poderia ser um .T. para ficar como um tipo boolean
jJson["ERRO"] := "Deu certo"
jJson["DADOS"] := {}

for nI := 1 to 3
    aAdd(jJson["DADOS"], JsonObject():new())
    jJson["DADOS"][nI]["DATAINI"] := Date() + nI
    jJson["DADOS"][nI]["DATAFIM"] := Date() + nI + 1
next

ConOut( jJson:toJson(), "" ) //{"STATUS":"true","DADOS":[{"DATAINI":"2021/05/26","DATAFIM":"2021/05/27"},{"DATAINI":"2021/05/27","DATAFIM":"2021/05/28"},{"DATAINI":"2021/05/28","DATAFIM":"2021/05/29"}],"ERRO":"Deu certo"}

//Exemplo 3
jJson := JsonObject():new()
jJson["STATUS"] := "true" //Isso aqui poderia ser um .T. para ficar como um tipo boolean
jJson["ERRO"] := "Deu certo"

aDados := {JsonObject():new(), JsonObject():new(), JsonObject():new()}

aDados[1]["DATAINI"] := Date()
aDados[1]["DATAFIM"] := Date() + 1

aDados[2]["DATAINI"] := Date() + 2
aDados[2]["DATAFIM"] := Date() + 3

aDados[3]["DATAINI"] := Date() + 4
aDados[3]["DATAFIM"] := Date() + 5

jJson["DADOS"] := aDados

ConOut( jJson:toJson(), "" ) //{"STATUS":"true","DADOS":[{"DATAINI":"2021/05/25","DATAFIM":"2021/05/26"},{"DATAINI":"2021/05/27","DATAFIM":"2021/05/28"},{"DATAINI":"2021/05/29","DATAFIM":"2021/05/30"}],"ERRO":"Deu certo"}

//Exemplo 4
jJson := JsonObject():new()
jJson["STATUS"] := "true" //Isso aqui poderia ser um .T. para ficar como um tipo boolean
jJson["ERRO"] := "Deu certo"

aDados := {}

for nI := 1 to 3
    aAdd(aDados, JsonObject():new())
    aDados[nI]["DATAINI"] := Date() + nI
    aDados[nI]["DATAFIM"] := Date() + nI + 1
next

jJson["DADOS"] := aDados

ConOut( jJson:toJson() ) //{"STATUS":"true","DADOS":[{"DATAINI":"2021/05/26","DATAFIM":"2021/05/27"},{"DATAINI":"2021/05/27","DATAFIM":"2021/05/28"},{"DATAINI":"2021/05/28","DATAFIM":"2021/05/29"}],"ERRO":"Deu certo"}

return

VAleu Daniel…deu certo…muito obrigado!