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.
