2010-11-03 12 views
2

J'ai un contrat de service WCF défini comme suit:format URL incorrecte dans JSON via le service WCF

[OperationContract] 
    [WebGet(
     UriTemplate = 
      "HubContent/{language}?apptype={appType}" 
     , 
     ResponseFormat = WebMessageFormat.Json)] 
    HubResults GetHubContent(string language, string appType); 

Dans la mise en œuvre de ce contrat au service, je retourne une liste d'objets qui obtient analysables dans JSON. Toutefois, lorsque l'une des propriétés des objets est une URL ou une chaîne contenant des barres obliques, le JSON renvoyé par le service dans le navigateur échappe aux barres obliques. Donc, cette url: - http://www.example.com/test/site ressemblera à ceci

http\/\/www.example.com\/test\/site. 

Y at-il quelque chose que je dois préciser peut-être dans le contrat lié au formatage pour y remédier?

Répondre

5

L'échappement des barres obliques est parfaitement valide JSON (voir http://json.org/, la construction "chaîne"). Si vous passez, par exemple,

{"myUrl":"http\/\/www.example.com\/test\/site"} 

à un analyseur de JSON (par exemple la fonction JavaScript « eval »), la valeur de myurl sera « http://www.example.com/test/site » (il sera automatiquement unescape les barres obliques). Ou ai-je mal compris votre question? Dans ce cas, pouvez-vous poster un exemple de JSON que vous pensez être cassé?

+0

Merci Eugene Je n'étais pas au courant de ça. Y a-t-il une raison spécifique pour laquelle il y aurait une préférence par défaut pour les barres obliques d'échappement? – Cranialsurge

+0

Je devrais le savoir, puisque le support JSON dans WCF était ma caractéristique quand j'étais chez Microsoft, mais pour la vie de moi je ne me souviens plus de la réponse exacte :) Si je devais deviner, je crois que ça devait faire avec la convention WCF pour sérialiser DateTime à JSON, aussi étrange que cela puisse paraître. –