Montar objeto json com array de arrays

Bom dia prezados, tudo bem com vocês?

Minha dúvida é a seguinte: comecei agora com api's e estrou trabalhando em algumas rotas de integração entre Protheus e um outro sistema que adquirimos. Estamos trabalhando com JSON (primeira vez que utilizo também) e em uma delas, eu preciso que o objeto contenha um array de arrays. Por exemplo, preciso enviar as informações de produtos, e uma delas é uma lista das promoções que o mesmo está contido. Eu recebo um array com essas promoções e uso um laço para percorrê-lo, adicionando cada atributo nas respectivas chaves do Json.

Exemplo:

oJson["externalPromotion"] := Eval(bObject)

for nCont := 1 to len(cPol) step 1

oJson["externalPromotion"]["reference"] := cPol[nCont][2]

oJson["externalPromotion"]["discount"] := cPol[nCont[6]

oJson["externalPromotion"]["maxQuantity"] := cPol[nCont][5]

oJson["externalPromotion"]["minQuantity"] := cPol[nCont][4]

oJson["externalPromotion"]["startDate"] := cPol[nCont][7]

oJson["externalPromotion"]["expiresIn"] := cPol[nCont][8]

next

Ele está sobrescrevendo as informações, mas não sei como saltar para o próximo array dentro do objeto Json. No fim, fica como se fosse apenas uma promoção para o produto, mesmo havendo mais. Se houver alguma outra forma mais funcional de eu popular esse atributo do Json, fico grato também se compartilharem.

Desde já agradeço,

Gustavo Oliveira

compartilhar
  • Gustavo, tem algumas coisas que não entendi. O que é isso Eval(bObject)? O que isso retorna? A propriedade externalPromotion é um JSON ou um Array? cPol apesar de estar com a notação húngara de Character, é um Array? Eu não vi em momento algum um array de array, se entendi bem, a propriedade externalPromotion deveria ser um Array de JSON. Consegue por favor me explicar melhor, talvez também colocar qual o resultado final do JSON que você espera.

    Daniel Mendes   03 de Aug de 2022
  • Boa tarde Daniel. Na verdade, esse array de array (ou array de listas, acho que está mais para isso) está na variável cPol. A propriedade externalPromotion pertence ao JSON, mas eu precisaria dela com várias listas, vamos dizer assim. Mas consegui fazer aqui, basicamente o que o amigo Everton sugeriu abaixo e deu certo. Simplesmente criei um outro objeto Json, atribui os valores do array que eu precisava e adicionei ao objeto principal. Agradeço a interação de qualquer forma.

    Gustavo Oliveira   03 de Aug de 2022
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags json advpl api ou faça a sua própria pergunta.