Existe alguma forma de incluir somente um atributo do meu model para retorno em um JSON?
Por exemplo, imagine que o meu model tem 5 campos e gostaria de retornar somente o campo3. Pensei em duas formas: #1result.use(Results.json()).from(myModel, "myModel").include("campo3"); #2result.use(Results.json()).from(myModel, "myModel").excludeAll().include("campo3");
Eu conheço a existência do exclude, porém tenho que informar todos os campos que desejo remover. Vejo isso como um problema, caso seja adicionado algum campo novo e o programador se esqueça de remover do JSON.
Que tal se você criar uma classe somente com esse atributo. Pode ser uma inner class mesmo, onde somente a sua classe “mãe” é capaz de instanciar. Ela retorna essa instância em um método e você faz o JSON dessa classe.
Outra alternativa é você fazer um conversor do XStream para essa sua classe, assim toda vez que essa classe aparecer, só serializa aquele atributo.
Outra alternativa é você serializar somente aquele atributo:
Oi Rafael, eu entendi … dá pra resolver o problema mas ainda acho que seria bom pensar em alguma melhoria nessa parte. Não sei se cabe ou se é válido sugerir ao pessoal do VRaptor.
Tem outra ponto que é assim: eu comentei sobre somente um campo… mas agora vamos imaginar que são somente 2 campos de 10. Eu poderia fazer assim:
E ainda, um outro caso, seria esse modelo em uma lista com vários objetos deste modelo, porém, em um determinado caso eu gostaria de retornar a lista de todos os modelos somente o campo1. Existe alguma outra forma mais simples, sem a necessidade de ficar implementando conversores específicos para cada caso?