Passar o type é comum para saber como traduzir o objeto q vc recebeu!

na minha sugestão tem q corrigir para:
*for (var p:String in objeto**.data**) {*
*           this[p] = objeto.data[p];*
*}*

Abrs

*--
Gustavo Martinez*


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.


Responder a