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.
