Primeira versão da classe...

http://pastebin.com/pKUw2Ahd




Em 15 de abril de 2013 11:12, Wemerson Couto Guimarães <[email protected]
> escreveu:

> Maravilha... estou montando uma classe aqui pra isso conforme vocês
> orientaram... Gustavo... eu estava fazendo quase do jeito que vc falou...
> mas esse detalhe aí de criar uma classe pai para os vos ficou mais top...
> vou seguir sua ideia que ficou top...
>
>
> Em 15 de abril de 2013 11:09, Fredy Gadotti <[email protected]>escreveu:
>
> Onde trabalho fazemos exatamente isso, passamos junto o tipo do objeto que
>> ele vai ser convertido.
>> Não vejo problema.
>>
>>
>> 2013/4/15 Wemerson Couto Guimarães <[email protected]>
>>
>>> hehehe... eu tava pensando justamente nisso... postei agorinha uma
>>> dúvida sobre isso... é uma boa prática passar no json o tipo do objeto?
>>>
>>>
>>> Em 15 de abril de 2013 11:02, Gustavo Martinez <[email protected]> escreveu:
>>>
>>> Wemerson, vc pode fazer o seguinte.
>>>>
>>>> Passe esse novo JSON com "type" e "data";
>>>>
>>>> depois:
>>>> var objeto:Object = JSON.parse( e.result.toString() );
>>>> var u:UsuarioVO = new UsuarioVO ( objeto );
>>>>
>>>> No construtor:
>>>>
>>>> public UsuarioVO ( objeto:Object=null )
>>>> {
>>>>       super( objeto )
>>>> }
>>>>
>>>> No construtor da classe pai de todos os VOs
>>>>
>>>> if ( objeto["type"] == getQualifiedClassName( this ) )
>>>> {
>>>>       for (var p:String in objeto) {
>>>>            this[p] = objeto[p];
>>>>         }
>>>> }
>>>> else
>>>>    throw new Error( "Objeto de classe errada: "+objeto["type"]+" ao
>>>> invés de "+getQualifiedClassName( this )+"!" );
>>>>
>>>>
>>>>
>>>> Abrs
>>>>
>>>> *--
>>>> Gustavo Martinez*
>>>>
>>>>
>>>> 2013/4/15 Wemerson Couto Guimarães <[email protected]>
>>>>
>>>>> Certo, estou criando aqui.. valeu pela dica!
>>>>>
>>>>> Um detalhe... como o retorno é em json, não vou conseguir tipar os
>>>>> dados correto?, então a solução é criar um campo no json que me diz que
>>>>> tipo de retorno é... um exemplo seria mudar de:
>>>>>
>>>>> {"id":999,"nome":"Wemerson Couto Guimaraes","email":"
>>>>> [email protected]"}
>>>>>
>>>>> para
>>>>>
>>>>> {
>>>>> "type":"UsuarioVO",
>>>>>  "data":{
>>>>>   "id":999,
>>>>>  "nome":"Wemerson Couto Guimaraes",
>>>>>  "email":"[email protected]"
>>>>>  }
>>>>> }
>>>>>
>>>>>
>>>>> e então fazer somente: var u:UsuarioVO = 
>>>>> ValueObjectTransformer.transform(e.result);
>>>>> e dentro da função tratar o tipo retornado... aconselha isso?
>>>>>
>>>>>
>>>>>
>>>>> Em 15 de abril de 2013 10:04, Fredy Gadotti 
>>>>> <[email protected]>escreveu:
>>>>>
>>>>> Cria uma classe utilitária que faz a conversão do objeto para você;
>>>>>> Caminho das pedras:
>>>>>> http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html
>>>>>>
>>>>>> Se você sabe que precisa que seja transformado em um UsuarioVO, você
>>>>>> passa a classe como parâmetro.
>>>>>>
>>>>>> Exemplo:
>>>>>>
>>>>>> var u:UsuarioVO = ValueObjectTransformer.transform(e.result,
>>>>>> UsuarioVO);
>>>>>>
>>>>>> A implementação dessa classe (assim como o nome, ficaria a seu
>>>>>> critério).
>>>>>>
>>>>>> Abraço,
>>>>>>
>>>>>> Fredy
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2013/4/15 Wemerson Couto Guimarães <[email protected]>
>>>>>>
>>>>>>> Já tentei usar ObjectUtil.copy() também, mas não funcionou
>>>>>>>
>>>>>>>
>>>>>>> Em 15 de abril de 2013 09:10, Wemerson Couto Guimarães <
>>>>>>> [email protected]> escreveu:
>>>>>>>
>>>>>>> Bom dia Fredy, o JSON retornado é simples.. veja um exemplo:
>>>>>>>>
>>>>>>>> trace(e.result); // {"id":999,"nome":"Wemerson Couto
>>>>>>>> Guimaraes","email":"[email protected]"}
>>>>>>>>
>>>>>>>> var usuario:UsuarioVO = JSON.parse( e.result.toString() ) as
>>>>>>>> UsuarioVO;
>>>>>>>> trace( usuario ); // null
>>>>>>>>
>>>>>>>> var objeto:Object = JSON.parse( e.result.toString() );
>>>>>>>> trace( objeto ); // [object Object]
>>>>>>>> trace( objeto.nome ); // Wemerson Couto Guimaraes
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Em 15 de abril de 2013 08:55, Fredy Gadotti <
>>>>>>>> [email protected]> escreveu:
>>>>>>>>
>>>>>>>> A sua String JSON diz pelo menos qual é a classe que ela deve ser
>>>>>>>>> convertida?
>>>>>>>>> Que se disser, você pode criar uma classe de proxy para instanciar
>>>>>>>>> dinamicamente a classe e atribuir os valores utilizando introspection 
>>>>>>>>> sem
>>>>>>>>> precisar fazer isso manualmente para cada método.
>>>>>>>>>
>>>>>>>>> Se senão falar qual é o objeto, a opção é também utilizar
>>>>>>>>> introspection só que você precisaria passar como argumento qual é o 
>>>>>>>>> tipo de
>>>>>>>>> objeto que você quer realizar a conversão em cada resultado de chamada
>>>>>>>>> remota.
>>>>>>>>>
>>>>>>>>> Espero que tenha sido claro.
>>>>>>>>>
>>>>>>>>> Abraço,
>>>>>>>>>
>>>>>>>>> Fredy
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2013/4/15 Wemerson Couto Guimarães <[email protected]>
>>>>>>>>>
>>>>>>>>>> Bom dia pessoal.
>>>>>>>>>>
>>>>>>>>>> Usei várias libs pra tratar JSON, e em todas o problema é o
>>>>>>>>>> mesmo: Consigo converter o json para um objeto declarado do tipo 
>>>>>>>>>> "Object",
>>>>>>>>>> porém não consigo converter para uma classe VO. Como vocês tratam 
>>>>>>>>>> isso?
>>>>>>>>>>
>>>>>>>>>> Tentei várias libs como por exemplo a as3corelib e agora estou
>>>>>>>>>> usando o suporte a JSON presente no *playerglobal.swc*, e a
>>>>>>>>>> situação é sempre a mesma que mencionei acima.
>>>>>>>>>>
>>>>>>>>>> Detalhe: Não dá pra ser diferente porque os dados vêm de um
>>>>>>>>>> serviço REST que acesso via HTTPServices...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Wemerson Guimarães
>>>>>>>>>> Rio Verde - Go - Brasil
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> --
>>>>>>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>>>>>>>> Para enviar uma mensagem, envie um e-mail para
>>>>>>>>>> [email protected]
>>>>>>>>>> Para sair da lista, envie um email em branco para
>>>>>>>>>> [email protected]
>>>>>>>>>> Mais opções estão disponíveis em
>>>>>>>>>> http://groups.google.com/group/flexdev
>>>>>>>>>> ---
>>>>>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>>>>>> "flexdev" dos Grupos do Google.
>>>>>>>>>> Para cancelar a inscrição neste grupo e parar de receber seus
>>>>>>>>>> e-mails, envie um e-mail para
>>>>>>>>>> [email protected].
>>>>>>>>>> Para obter mais opções, acesse
>>>>>>>>>> https://groups.google.com/groups/opt_out.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  --
>>>>>>>>> --
>>>>>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>>>>>>> Para enviar uma mensagem, envie um e-mail para
>>>>>>>>> [email protected]
>>>>>>>>> Para sair da lista, envie um email em branco para
>>>>>>>>> [email protected]
>>>>>>>>> Mais opções estão disponíveis em
>>>>>>>>> http://groups.google.com/group/flexdev
>>>>>>>>> ---
>>>>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>>>>> "flexdev" dos Grupos do Google.
>>>>>>>>> Para cancelar a inscrição neste grupo e parar de receber seus
>>>>>>>>> e-mails, envie um e-mail para [email protected]
>>>>>>>>> .
>>>>>>>>> Para obter mais opções, acesse
>>>>>>>>> https://groups.google.com/groups/opt_out.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Wemerson Guimarães
>>>>>>>> Rio Verde - Go - Brasil
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Wemerson Guimarães
>>>>>>> Rio Verde - Go - Brasil
>>>>>>>
>>>>>>> --
>>>>>>> --
>>>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>>>>> Para enviar uma mensagem, envie um e-mail para
>>>>>>> [email protected]
>>>>>>> Para sair da lista, envie um email em branco para
>>>>>>> [email protected]
>>>>>>> Mais opções estão disponíveis em
>>>>>>> http://groups.google.com/group/flexdev
>>>>>>> ---
>>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>>> "flexdev" dos Grupos do Google.
>>>>>>> Para cancelar a inscrição neste grupo e parar de receber seus
>>>>>>> e-mails, envie um e-mail para [email protected].
>>>>>>> Para obter mais opções, acesse
>>>>>>> https://groups.google.com/groups/opt_out.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>  --
>>>>>> --
>>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>>>> Para enviar uma mensagem, envie um e-mail para
>>>>>> [email protected]
>>>>>> Para sair da lista, envie um email em branco para
>>>>>> [email protected]
>>>>>> Mais opções estão disponíveis em
>>>>>> http://groups.google.com/group/flexdev
>>>>>> ---
>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>> "flexdev" dos Grupos do Google.
>>>>>> Para cancelar a inscrição neste grupo e parar de receber seus
>>>>>> e-mails, envie um e-mail para [email protected].
>>>>>> Para obter mais opções, acesse
>>>>>> https://groups.google.com/groups/opt_out.
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Wemerson Guimarães
>>>>> Rio Verde - Go - Brasil
>>>>>
>>>>> --
>>>>> --
>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>>> Para enviar uma mensagem, envie um e-mail para
>>>>> [email protected]
>>>>> Para sair da lista, envie um email em branco para
>>>>> [email protected]
>>>>> Mais opções estão disponíveis em
>>>>> http://groups.google.com/group/flexdev
>>>>> ---
>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>> "flexdev" dos Grupos do Google.
>>>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>>>>> envie um e-mail para [email protected].
>>>>> Para obter mais opções, acesse
>>>>> https://groups.google.com/groups/opt_out.
>>>>>
>>>>>
>>>>>
>>>>
>>>>  --
>>>> --
>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>> Para enviar uma mensagem, envie um e-mail para [email protected]
>>>> Para sair da lista, envie um email em branco para
>>>> [email protected]
>>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>>> ---
>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>> "flexdev" dos Grupos do Google.
>>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>>>> envie um e-mail para [email protected].
>>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out
>>>> .
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Wemerson Guimarães
>>> Rio Verde - Go - Brasil
>>>
>>> --
>>> --
>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>> Para enviar uma mensagem, envie um e-mail para [email protected]
>>> Para sair da lista, envie um email em branco para
>>> [email protected]
>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>> ---
>>> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev"
>>> dos Grupos do Google.
>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>>> envie um e-mail para [email protected].
>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>  --
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>> ---
>> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev"
>> dos Grupos do Google.
>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>> envie um e-mail para [email protected].
>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
>
> --
> Wemerson Guimarães
> Rio Verde - Go - Brasil
>



-- 
Wemerson Guimarães
Rio Verde - Go - Brasil

-- 
-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
--- 
Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos 
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um 
e-mail para [email protected].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Responder a