1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Urgente Tratar retorno Json

Discussão em 'Progress 4GL' iniciado por fnmattos, Março 31, 2017.

  1. Agnaldo

    Agnaldo Membro Ativo

    OK.
    Vamos por partes.

    Primeiro o conteúdo do JSON.
    Ele esta um pouco diferente do "padrão" Progress.
    Mas facilmente voce pode motar uma rotina que coloque algum conteúdo (texto) antes e depois da string original.

    Abaixo o conteúdo com as tags a mais para deixar mais no estilo Progress.
    Obs: A identação é apenas para ler mais facilmente.

    Código:
    {
        "dts": 
            {
                "Customer": 
                    [
                        {
                            "id":"123",
                            "name":"Nome do Cliente",
                            "rg":"00.000.000-0",
                            "cpf":"00000000000",
                            "phone":"1133330000",
                            "cellphone":"11999990000",
                            "birth_date":"0000-00-00",
                            "gender":"0",
                            "email":"emaildo@cliente.com.br",
                            "nickname":"",
                            "token":"123QWE123QWE123ASD",
                            "total_orders":"8",
                            "observation":"",
                            "type":"1",
                            "cnpj":"00.000.000/0000-00",
                            "company_name":"Razão Social do Cliente",
                            "state_inscription":"Isento",
                            "reseller":"0",
                            "discount":"0.00",
                            "blocked":"0",
                            "credit_limit":"10.00",
                            "indicator_id":"0",
                            "profile_customer_id":"1",
                            "last_sending_newsletter":"2016-08-02",
                            "last_purchase":"2016-08-02",
                            "last_visit":"2016-08-15",
                            "last_modification":"0000-00-00 00:00:00",
                            "address":"Endereço do Cliente",
                            "zip_code":"04001-001",
                            "number":"123",
                            "complement":"Sala 123",
                            "neighborhood":"Bairro do Cliente",
                            "city":"Cidade do Cliente",
                            "state":"SP",
                            "newsletter":"1",
                            "created":"2008-10-14 18:17:23",
                            "registration_date":"2008-10-14",
                            "modified":"2016-08-15 18:17:23",
                            "CustomerAddress":
                                [
                                    {"id":"1"},
                                    {"id":"2"}
                                ]
                        }
                    ]
            }
    }
    
    Abaixo tem o código 4GL para ler.
    Do registro Customer, eu peguei apenas os primeiros campos.
    Note que CustomerAddress é visto como uma segunda estrutura de dados (tabela).

    Código:
    DEFINE TEMP-TABLE Customer FIELD id    AS INTEGER
                               FIELD name  AS CHARACTER
                               FIELD rg    AS CHARACTER
                               FIELD cpf   AS CHARACTER
                               FIELD phone AS CHARACTER.
    
    DEFINE TEMP-TABLE CustomerAddress FIELD id    AS INTEGER.
    
    DEFINE VARIABLE retorno AS LOGICAL NO-UNDO.
    
    DEFINE DATASET dts FOR customer,  CustomerAddress.
    
    retorno  = DATASET dts:READ-JSON("file","c:\temp\teste.json","empty").
    
    
    FOR EACH Customer:
        DISPLAY Customer.
    END.
    FOR EACH  CustomerAddress:
        DISPLAY  CustomerAddress.
    END.                                
    
    
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Na prática seu código deu na mesma, só que não é dinâmico, se tiver 2 clientes com seus endereços próprios não mostra o vínculo. Teria que colocar o ID do Customer para cada CustomerAddress para mostrar o vínculo entre as tabelas.

    Infelizmente o progress não trabalha como o dotNET, que traz cada um como objeto e nesse casso 2 objetos CustomerAddress dentro do objeto Customer de ID 123.

Compartilhe esta Página