2010-04-24 5 views
2

i ont un contrôleur asp.net que JSON comme les résultatsasp.net mvc délivrer en sortie JSON avec des barres obliques inverses (échappement), malgré de nombreuses tentatives pour filtrer

une partie de celui-ci est ici

returnString += string.Format(@"{{""filename"":""{0}"",""line"":[", file.Filename); 

ce i s'est retourné ceci:

"{\"DPI\":\"66.8213457076566\",\"width\":\"563.341067\",\"editable\":\"True\",\"pricecat\":\"6\",\"numpages\":\"2\",\"height\":\"400\",\"page\":[{\"filename\":\"999_9_1.jpg\",\"line\":[]},{\"filename\":\"999_9_2.jpg\",\"line\":[]}]]" 

i ont essayé de revenir avec les méthodes suivantes:

return Json(returnString); 
return Json(returnString.Replace("\\",""); 

retour Json sérialisera ma chaîne à une chaîne jSon, ce que je sais, mais il aime échapper pour une raison quelconque, comment puis-je me débarrasser d'elle ????

pour plus d'informations voici comment je l'appelle avec jQuery:

$.ajax({ 
    url:"/Products/LoadArtworkToJSon", 
    type:"POST", 
    dataType: "json", 
    async: false, 
    data:{prodid: prodid }, 
    success: function(data){ 
     sessvars.myData = data; 
     measurements = sessvars.myData; 
     $("#loading").remove(); 

    //empty the canvas and create a new one with correct data, always start on page 0; 
    $("#movements").remove(); 
    $("#canvas").append("<div id=\"movements\" style=\"width:" + measurements.width + "px; height:" 
      + Math.round(measurements.height) 
      + "px; display:block; border:1px solid black; background:url(/Content/products/" 
      + measurements.page[0].filename + ") no-repeat;\"></div>"); 

votre aide est très appréciée

grâce

Répondre

4

regardez-vous dans le débogueur VS ou dans le navigateur ? Le débogueur inclura les barres obliques supplémentaires lorsqu'il l'affiche, tandis que la sortie réelle ne consistera pas en ces valeurs.

Editer: Essayez de passer un objet à Json au lieu d'une chaîne personnalisée. Votre chaîne est déjà au format JSON (ish), donc le passer à Json le réécode.

return Json(new { filename = "yourfilename" }); 

ou

return "yourfilename"; 

... etc, en ajoutant toutes les propriétés dont vous avez besoin.

+0

je regarde dans les résultats de firebug après que j'obtienne l'erreur que mesures.page est indéfini – davethecoder

+0

dans le firebug sur la réponse je ne pense pas que devrait incs backslashes aussi devrait-il ???? si je cours d'alerte (JSONstring.make (mesures)); je reçois double // donc ils doivent défo être là en quelque sorte ???????? – davethecoder

+0

S'ils sont dans l'alerte affichant des barres obliques inverses, alors vous doublez définitivement les citations. Ma conjecture est que Json (blah) attend un objet, pas une chaîne, donc il échappe mal à la chaîne. Essayez comme édité ci-dessus. – jvenema

Questions connexes