Como criar um objeto Marshaller JSON
12/08/2014 14:15
0
Pessoal,

Tenho um dúvida na questão da criação de um objeto Marshaller para criar o JSON a partir de uma classe. A função converter (as JSON) não me agrada e eu gostaria de utilizar uma própria com os dados selecionados por mim. Alguém possui um tutorial à respeito disso?

Obrigado a todos!
Abraço
Tags: Marshaller, JSON, REST


0
Oi Celso,

neste caso você pode usar código Java padrão mesmo. Referencie a dependência no arquivo BuildConfig.groovy ou inclua os jars na pasta lib do seu projeto.

Em seguida, você pode implementar um filtro que faça a conversão para você ou ir aplicando este marshaller em todas as actions que te interessam.


1
Obrigao Kico!

Essa é uma boa solução.
Estava pesquisando aqui, e encontrei o seguinte link: http://compiledammit.com/2012/08/16/custom-json-marshalling-in-grails-done-right/

Será que tem como fazer algo do tipo? utilizando isso?
12/08/2014 19:01


1
Oi Celso,

esta solução é ordens de magnitude superior à que eu havia proposto. Interessante que ela inclusive me ajudou a resolver um problema que estava tendo com o Spring. Muito obrigado por ter postado isto aqui!

Precisando de qualquer coisa, estou aí para te ajuadr, ok?


0
Que bom!

Só não entendi muito bem como ele vai pegar uma lista de objetos (no caso dele o Recipe).

Esse exemplo utilizou um outro link:
http://manbuildswebsite.com/2010/02/15/rendering-json-in-grails-part-3-customise-your-json-with-object-marshallers/

Nesse caso eu entendi como funciona um Marshaller, mas pensei numa melhor solução para criar um JSON a partir de uma lista de objetos.
13/08/2014 11:38


1
Olá!

Eu ja implementei marshallers customizados.

vou deixar o link do repositório espero que ajude

https://github.com/leandrogehlen/grails-easyui

Your text to link here...


0
Obrigado pela resposta Leandro! Estou vendo que você utilizou uma solução em Java. Muito bom!

Eu estava analisando alguns links também. Finalmente consegui compreender como funciona essa questão dos JSON register Object Marshaller. Basta inserir a sua implementação no Bootstrap.groovy, como o rapaz fez no link:

class BootStrap {
def init = {servletContext ->
JSON.registerObjectMarshaller(Person) {
def returnArray = [:]
returnArray['name'] = it.name
returnArray['addrs'] = it.addresses
return returnArray
}
}


A minha dúvida é até quando essa implementação é uma boa prática? Nesse caso, o marshaller irá sempre depender do Bootstrap. Isso está correto?

Encontrei outras soluções também como essas citadas neste link.

Obrigado a todos pelas respostas. Me ajudaram bastante!
14/08/2014 17:47


1
Ola Celso!
Na verdade não é bem isso, nos links que voce disponiblizou esta sendo demonstrado como serializar uma classe específica.

O que eu fiz foi alterar como é renderizado JSON;

JSON.registerObjectMarshaller(new EasyuiDomainClassMarshaller(true, grailsApplication))


O código acima registra a minha classe para transformar objetos em JSON ou seja toda vez que voce tentar converter algo para JSON "obj as JSON" ou o "respond" tiver que responder em JSON o grails usara minha classe.

O que eu fiz nesta classe é poder renderizar as referencia belongsTo. Atraves desta classe eu consigo renderizar algo como pesssoa.cidade.nome


0
Ahhh...Entendi agora!

Essa solução é muito boa Leandro! No meu caso eu vou precisar serializar cada classe de uma maneira específica!

O JSON do grails é mto básico, e esse seu código soluciona bem essa questão quando é necessário obter todos os objetos.
15/08/2014 09:03


0
Leandro,

Nesse caso você utilizou JSON.registerObjectMarshaller no Bootstrap, correto? Estou vendo que de qualquer jeito, vamos depender do Bootstrap. Mas eu não sei se há algum problema quanto a isso.
15/08/2014 09:06


0
Olá Celso!

Estou vendo que você tem algum receio quando ao Bootstrap. A funcionalidade deste
arquivo é justamente inicializar o que for necessário para que sua aplicação funcione corretamente.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto