Adicionar elementos em um array json

Estou trabalhando com uma integração onde recebo um objeto json no seguinte formato:

> [ { "id": "00000000-0000-0000-0000-000000000000", "success": "yes", "index": 0, "message": "string" } ]
Ou seja é um objeto json com um array na sua raiz, sem um nome de atributo para esse array. Consigo recuperar perfeitamente os dados dele, porém queria adicionar mais elementos nele, porém como não tenho um nome de atributo não consegui, certeza que se esse array fosse um atributo daria certo, mas como é na raiz do objeto a função aAdd() não reconhece. Estou fazendo um contorno convertente a string em outro objeto json, onde esse array é um elemendo dele, é funcional porém deveria haver uma forma mais prática de fazer isso diretamente, assim como acessamos os dados pelo indice (ex.: jRet[1]…)
Tem alguma função advpl para esse tipo de manipulação ?

Olá,

Infelizmente, não tem como, acaba sendo necessário criar uma variável auxiliar como você está fazendo, seja criando um array novo etc.

Exemplo:

//-------------------------------------------------------------------
/*/{Protheus.doc} jsonArray
Exemplo de JSON array

@author Dan M
@since Nov 24, 2025
@version 1.0
/*/
//-------------------------------------------------------------------
user function jsonArray()
local jJson as json
local nFor as numeric
local aAux as json

jJson := JsonObject():new()

jJson:fromJson( '[ { "id": "00000000-0000-0000-0000-000000000000", "success": "yes", "index": 0, "message": "string" } ]' )

//Atribuindo valores no JSON dentro do array
for nFor := 1 to Len(jJson)
    jJson[nFor]["xisto"] := nFor
next

//Atribuindo novas posições no array, é necessária uma variável auxiliar
aAux := {}

for nFor := 1 to Len(jJson)
    aAdd(aAux, jJson[nFor])
next

aAdd(aAux, { "id": "00000000-0000-0000-0000-000000000001", "success": "no", "index": 1, "message": "string" } )

jJson:Set(aAux)

aAux := nil

ConOut(jJson:toJson())

return
1 curtida