2016-12-06 4 views
2

J'ai donc cette chaîne que je gardais dans la base de données:Spring échappe déjà échappé à la chaîne

{\"facebook\":\"fb.com\",\"twitter\":\"twitter.com\",\"instagram\":\"\",\"googlePlus\":\"\",\"others\":\"espn.com\"} 

Mais quand je l'appelle l'EEG api, je reçois ce JSON

{\\\"facebook\\\":\\\"fb.com\\\",\\\"twitter\\\":\\\"twitter.com\\\",\\\"instagram\\\":\\\"\\\",\\\"googlePlus\\\":\\\"\\\",\\\"others\\\":\\\"espn.com\\\"} 

Pourquoi est-ce passe et comment puis-je obtenir exactement les mêmes données qui sont stockées dans la base de données?

Répondre

5

Il est à nouveau échappé lorsque vous récupérez les données car Spring pense que le caractère \ fait partie des données et qu'il n'est pas utilisé pour s'échapper ".

Vous ne voulez jamais stocker des caractères échappés (que ce soit pour des caractères spéciaux JSON, des caractères HTML dans un texte, ...), vous devez stocker des données non échappées pour résoudre votre problème. L'échappement doit être fait lors de l'affichage des données, pas lors de leur stockage.

C'est une mauvaise pratique de stocker des données échappées en raison du problème que vous rencontrez, mais aussi parce que cela va prendre un espace de stockage inutile dans la base de données (ce qui ne pose pas de problème pour vous des rangées).

+0

Et de cette façon cela fonctionne! Merci. – nirvair

0

Après avoir obtenu les données, enregistrez dans un String puis:

String newJava = str.replace("\\\", "\");