2010-12-05 26 views
0

au printemps 3 contrôleurcommentaire sur JSON avant envoyer au client

@RequestMapping(value = "/employee/{id}", RequestMethod.GET) 
public @ResponseBody Employee getEmployee(@PathVariable long empID) { 
    Employee employee = employeeService.getByID(empID); 
    return employee; 
} 

quel fichier dois-je modifier, de sorte que le JSON retournerait comme ci-dessous

au lieu de retourner "['foo', 'bar']"

retour cette "/*['foo', 'bar']*/" (avec commentaire)?

+0

à quoi cela sert-il? – skaffman

+1

@skaffman, tu veux dire quelle est la raison de faire ça? allez ici http://tinyurl.com/mq96sh, voyez le titre 'Protéger votre application de site unique' – cometta

Répondre

1

Sous les couvertures, Spring MVC délègue à un HttpMessageConverter pour effectuer la sérialisation. Dans ce cas, Spring MVC appelle un MappingJacksonHttpMessageConverter construit sur le processeur Jackson JSON . Cette implémentation est activée automatiquement lorsque vous utilisez l'élément de configuration mvc: piloté par annotation avec Jackson présent dans votre chemin de classe.

Ainsi, vous pouvez fournir votre propre HttpMessageConverter mise en œuvre en remplaçant

protected void writeInternal(Object o, 
         HttpOutputMessage outputMessage) 
        throws IOException, 
         HttpMessageNotWritableException 
méthode

de MappingJacksonHttpMessageConverter, quel serveur pourrait le but.

+0

est-il possible d'utiliser l'intercepteur de ressort postHandle pour faire ceci? Si oui, que devrais-je mettre pour la méthode postHandle? comment obtenir le json brut de cette méthode? – cometta

+0

@cometta Je ne pense pas que vous serez en mesure de modifier le contenu qui a déjà été vidé/validé, donc utiliser uniquement postHandle ne sera pas la bonne solution. Vous aurez besoin d'utiliser un preHandle aussi. –

1

Remarque concernant les commentaires: les commentaires ne font pas (hélas!) Partie de la spécification JSON, donc les utiliser signifie utiliser un JSON non standard.

Pour ce que ça vaut, il est possible de faire des parsers JSON (y compris Jackson) gérer les commentaires (pour Jackson, voir http://wiki.fasterxml.com/JacksonFeaturesParser); ainsi que les écrire (besoin d'utiliser 'JsonGenerator.writeRaw ("/ ... /")').

Mais peut-être le printemps est une façon de décorer la réponse, car ce serait probablement plus simple à mettre en œuvre.