Populando mais de um nó em Json

Boa tarde!

Estou com uma dúvida ao popular mais de um nó usando a classe JsonObject. Segue exemplo:

{
  "Type": "Digital",
  "name": "Pedido",
  "description": "teste description",
  "price": "1000000",
  "weight": 2000000,
  "ExpirationDate": "2037-06-19",
  "maxNumberOfInstallments": "1",
  "quantity": 2,
  "Sku": "teste",
  "shipping": {
    "type": "WithoutShipping",
    "name": "teste",
    "price": "1000000000"
  },
  "SoftDescriptor": "Pedido1234"
}

Preciso popular o nó shipping, tentei fazer da seguinte maneira mas não obtive sucesso:

jJsPed['Type'] := 'Digital'
jJsPed['name'] := 'Pedido API'
jJsPed['description'] := 'Descrição Teste'
jJsPed['price'] := 100
jJsPed['ExpirationDate'] := '2020-06-10'
jJsPed['maxNumberOfInstallments'] := '1'
jJsPed['quantity'] := '1'
jJsPed['Sku'] := 'Teste'
jJsPed['SoftDescriptor'] := 'PagElsons'

jJsFrete['type'] := 'FixedAmount'
jJsFrete['name'] := 'Transportadora'
jJsFrete['price'] := '5'

jJsPed['shipping'] := jJsFrete:ToJson()

Obtive o seguinte resultado:

{
    "Type":"Digital",
    "ExpirationDate":"2020-06-10",
    "Sku":"Teste",
    "SoftDescriptor":"PagElsons",
    "maxNumberOfInstallments":"1",
    "name":"Pedido API",
    "price":100,
    "shipping":
        "{
            \"type\":\"FixedAmount\",
            \"name\":\"Transportadora\",
            \"price\":\"5\"
        }",
    "quantity":"1",
    "description":"Descrição Teste"
}

Além de ter colocado aspas antes e depois das chaves do nó shipping, também foram incluídas barras e não entendi o motivo.

Alguém poderia me auxiliar? Sou leigo em Json.

Obrigado desde já.

compartilhar
  • As barras ele adicionou para entender a aspas duplas como um caracter e não como uma atribuição de string e da forma que está aí é como se tudo qe shipping recebe seja uma string, faz o seguinte, se jJsFrete já for um jsonobject, não chame o metodo tojson -> faça assim jJsPed['shipping'] := jJsFrete

    Douglas Bichir   10 de Jun de 2020
  • Boa noite, Douglas. Era exatamente isso, obrigado pela ajuda. Crie uma resposta a esse tópico pra eu poder marcar como solução.

    Giordano Trabach Xavier   10 de Jun de 2020
  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 advpl json ou faça a sua própria pergunta.