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 <fredy.gado...@gmail.com>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 <wemerso...@gmail.com>
>
>> 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 <g...@ufrj.br> 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 <wemerso...@gmail.com>
>>>
>>>> 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":"
>>>> wemerso...@gmail.com"}
>>>>
>>>> para
>>>>
>>>> {
>>>> "type":"UsuarioVO",
>>>>  "data":{
>>>>   "id":999,
>>>>  "nome":"Wemerson Couto Guimaraes",
>>>>  "email":"wemerso...@gmail.com"
>>>>  }
>>>> }
>>>>
>>>>
>>>> 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 
>>>> <fredy.gado...@gmail.com>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 <wemerso...@gmail.com>
>>>>>
>>>>>> Já tentei usar ObjectUtil.copy() também, mas não funcionou
>>>>>>
>>>>>>
>>>>>> Em 15 de abril de 2013 09:10, Wemerson Couto Guimarães <
>>>>>> wemerso...@gmail.com> escreveu:
>>>>>>
>>>>>> Bom dia Fredy, o JSON retornado é simples.. veja um exemplo:
>>>>>>>
>>>>>>> trace(e.result); // {"id":999,"nome":"Wemerson Couto
>>>>>>> Guimaraes","email":"wemerso...@gmail.com"}
>>>>>>>
>>>>>>> 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 <fredy.gado...@gmail.com
>>>>>>> > 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 <wemerso...@gmail.com>
>>>>>>>>
>>>>>>>>> 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
>>>>>>>>> flexdev@googlegroups.com
>>>>>>>>> Para sair da lista, envie um email em branco para
>>>>>>>>> flexdev-unsubscr...@googlegroups.com
>>>>>>>>> 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 flexdev+unsubscr...@googlegroups.com
>>>>>>>>> .
>>>>>>>>> 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
>>>>>>>> flexdev@googlegroups.com
>>>>>>>> Para sair da lista, envie um email em branco para
>>>>>>>> flexdev-unsubscr...@googlegroups.com
>>>>>>>> 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 flexdev+unsubscr...@googlegroups.com.
>>>>>>>> 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
>>>>>> flexdev@googlegroups.com
>>>>>> Para sair da lista, envie um email em branco para
>>>>>> flexdev-unsubscr...@googlegroups.com
>>>>>> 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 flexdev+unsubscr...@googlegroups.com.
>>>>>> 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
>>>>> flexdev@googlegroups.com
>>>>> Para sair da lista, envie um email em branco para
>>>>> flexdev-unsubscr...@googlegroups.com
>>>>> 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 flexdev+unsubscr...@googlegroups.com.
>>>>> 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 flexdev@googlegroups.com
>>>> Para sair da lista, envie um email em branco para
>>>> flexdev-unsubscr...@googlegroups.com
>>>> 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 flexdev+unsubscr...@googlegroups.com.
>>>> 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 flexdev@googlegroups.com
>>> Para sair da lista, envie um email em branco para
>>> flexdev-unsubscr...@googlegroups.com
>>> 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 flexdev+unsubscr...@googlegroups.com.
>>> 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 flexdev@googlegroups.com
>> Para sair da lista, envie um email em branco para
>> flexdev-unsubscr...@googlegroups.com
>> 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 flexdev+unsubscr...@googlegroups.com.
>> 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 flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> 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 flexdev+unsubscr...@googlegroups.com.
> 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 flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
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 flexdev+unsubscr...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Responder a