Versão atual:

json - inserindo objeto dentro de objeto

Olá! Estou precisando inserir objeto dentro de objeto, tentei varias situações mas sem sucesso. O json parcial que eu preciso está abaixo.

{
  "remetenteId": 0,
  "cnpj": 0,
  "remessaCodigo": "string",
  "encomendas": [
    {
      "servicoTipo": 0,
      "servicoTipoInfo": "string",
      "entregaTipo": 0,
      "peso": 0,
      "volumes": 0,
      "condFrete": "string",
      "pedido": "string",
      "clienteCodigo": "string",
      "natureza": "string",
      "volumesTipo": "string",
      "icmsIsencao": 0,
      "coletaInfo": "string",
      "campanha": "string",      
      "destinatario": {
        "nome": "string",
        "cpfCnpj": "string",
        "ie": "string",        
          "endereco": {
          "logradouro": "string",
          "numero": "string",
          "complemento": "string",
          "pontoReferencia": "string",
          "bairro": "string",
          "cidade": "string",
          "estado": "string",
          "pais": "string",
          "cep": 0 },          
          "email": "string",
          "telefone1": 0,
          "telefone2": 0,
          "telefone3": 0 
        },
      "cod": {
        "formaPagamento": "string",
        "parcelas": 0,
        "valor": 0 },
      "agendamento": {
        "data": "string",
        "periodo1": "string",
        "periodo2": "string"
      }      
    }
  ]
}

Eu consegui inserir os dados basicos e o array "encomendas", mas, "destinatario" dentro de encomendas nao consegui, e, ainda tem "endereco" dentro de "destinatario".

oJson := JSonObject():New()
oJson["remetenteId"] := 99999 // N,5 - ID do Remetente - D U V I D A 
oJson["cnpj"] := rtrim(SM0->M0_CGC) // C,14 - CNPJ do Remetente
oJson["remessaCodigo"] := nil // C,20 - Opcional - Código de identificação da remessa pelo cliente 

// na estrutrua do json cria uma lista [ ] com objeto dentro { }
aJson := {}
Aadd(aJson,JsonObject():new()) // grupo de dados Encomendas
aJson[1]['servicoTipo'] := 1 // N,1 - Serviço Contratado - =====>>>>>> P E G A R  DO SA4 depois
aJson[1]['servicoTipoInfo'] := nil // C,14 - Opcional - Serviço Contratado
aJson[1]['entregaTipo'] :=  0 // N,1 - Tipo de Entrega - 0 = Entrega Normal (padrão) / 1 = GoBack / 2 = RMA
aJson[1]["peso"] := nil // N,3,2 - Opcional - Peso da encomenda
aJson[1]["volumes"] := (cAlias)->C5_VOLUME1 // N,2 - Quantidade de volumes
aJson[1]["condFrete"] := "CIF" // C,3 - Condição de frete - Preencher com CIF, pois a Total Express não trabalha com a modalidade FOB
aJson[1]["pedido"] := (cAlias)->D2_PEDIDO // C,20 - Código do pedido
aJson[1]["clienteCodigo"] := nil // C,20 - Opcional - Código fornecido pelo cliente para identificar a encomenda
aJson[1]["natureza"] := "Utilidades domesticas e decoracao" // C,25 - Natureza da Mercadoria - Informar a descrição do produto predominante. Item exigido para emissão do CTe (vide campo 279 do Manual de Integração Contribuinte - Versão 1.0.4a de - 12/08/11)
aJson[1]["volumesTipo"] := "CX"  // C,3 - Tipo de Volumes
aJson[1]["icmsIsencao"] := 0   //N,1 - Indica mercadoria isenta de ICMS - 0 = não / 1 = sim  =====>>>>>> P E G A R  D A  QUERY
aJson[1]["coletaInfo"] := "Utilidades domesticas e decoracao" // C,255 - Descrição do material a ser coletado
aJson[1]["campanha"] := nil // C,10 - Nome da Campanha - Descrição da campanha. O acompanhamento de campanhas é um produto adicional que deve ser contratado.

oJson["encomendas"] := JSonObject():New()
oJson["encomendas"] := aJson
FreeObj(aJson)

Versões (2):

Ver a versão formatada

json - inserindo objeto dentro de objeto

Comentário

new question