Converter objeto JSON
Postado em 26/01/2012 13:38
0
0
Tenho as seguintes classes de dominio:

package mypkg
class GrupoProduto {
String descricao
boolean ativo
}


package mypkg
class SubGrupoProduto {
String descricao
boolean ativo
GrupoProduto grupo
}

Quando executo:

import grails.converters.JSON
import mypkg.SubGrupoProduto

def subGrupo = SubGrupoProduto.get(1)
println(subGrupo)
println(subGrupo as JSON)

Retorno:

1 - KARATE
{"class":"mypkg.SubGrupoProduto","id":1,"ativo":true,"descricao":"KARATE","grupo":{"class":"GrupoProduto","id":1}}

Gostaria de saber como consigo trazer as outras propriedades de 'grupo', porque apenas o 'id' e 'class' tenho que fazer outras requisições ao servidor para conseguir as outras propriedades.
Tags: json properties
castiel
Pontos: 207






0
0
26/01/2012 21:20
Hummm... Será que isso tem a ver com o tipo de mapeamento que você escolheu?

Já tentou trocar isto:

class SubGrupoProduto {
String descricao
boolean ativo
GrupoProduto grupo
}

Por isto?

class SubGrupoProduto {
String descricao
boolean ativo

static belongsTo = [grupoProduto: GrupoProduto]
}


Como, por default, nesse tipo de associação o Grails não carrega toda a classe relacionada na hora da consulta, talvez você consiga alterando a estratégia para earger fetching, evitando a criação do proxy dinâmico e carregando a classe por completo:

static mapping = {
grupoProduto lazy: false
}


Abraços.

CarlosG
Pontos: 114



0
0
27/01/2012 16:38
O 'lazy: false' eu já fiz antes não deu certo. Vou tentar alterar para belongsTo.

castiel
Pontos: 207



0
0
27/01/2012 17:38
Coloquei o 'belongsTo' porém o resultado é o mesmo.

castiel
Pontos: 207



0
0
31/01/2012 12:15
Usei o JsonSlurper:
http://groovy.codehaus.org/api/groovy/json/JsonSlurper.html
Não foi a solução mais elegante porém está funcionando.

castiel
Pontos: 207



 


Esqueceu sua senha?
 
Grails Brasil é mantido por itexto Desenvolvimento de Projetos Ltda.
Em caso de problemas, sinta-se livre para procurar Henrique Lobo Weissmann (Kico) por e-mail: kicolobo@itexto.net
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão (clique no logo à direita para maiores detalhes)