2012-07-02 18 views
5

Tôi có một WEB API C#, bên trong nó Tôi có dữ liệu mà là một liên kết, ví dụ: images/Chinese/AbaloneEggCustard.jpgLoại bỏ dấu gạch chéo từ web api JSON C#

nhưng trong JSON, nó xuất hiện như thế này:

[{"BackgroundImage":"images\/Chinese\/AbaloneEggCustard.jpg", ......}] 

Tôi có thể biết cách xóa bỏ dấu gạch chéo không? Cần nó loại bỏ vì vậy hy vọng tôi có thể truy cập vào các hình ảnh khi tôi liên kết với azure.


Dưới đây là các mã điều khiển của tôi:

public IEnumerable<Food> Get() 
    { 
     List<Food> Cases = new List<Food>(); 
     try 
     { 
      string connectionString = ConfigurationManager.ConnectionStrings["HealthyFoodDBConnectionString"].ConnectionString; 
      myConnection = new SqlConnection(connectionString); 
      myConnection.Open(); 

      string sql = "SELECT * from [Recipe] "; 

      myCommand = new SqlCommand(sql, myConnection); 
      myDataReader = myCommand.ExecuteReader(); 

      while (myDataReader.Read()) 
      { 
       Cases.Add(new Food() 
       { 
        RecipeID = (int)myDataReader["RecipeID"], 
        RecipeTitle = (string)myDataReader["RecipeTitle"], 
        FoodCategoryID = Convert.ToInt32(myDataReader["FoodCategoryId"]), 
        Serves = (string)myDataReader["Serves"], 
        PerServing = (string)myDataReader["PerServing"], 
        Favourite = ((Convert.ToInt32(myDataReader["Favourite"]) == 1) ? true : false), 
        Directions = (string)myDataReader["Directions"], 
        BackgroundImage = (string)myDataReader["BackgroundImage"], 
        HealthyTips = (string)myDataReader["HealthyTips"], 
        Nutritions = (string)myDataReader["Nutritions"], 
        Ingredients = (string)myDataReader["Ingredients"] 
       }); 
      } 
     } 
     finally 
     { 
      if (myConnection != null) 
       myConnection.Close(); 
     } 
     return Cases; 
    } 

đây là mã Index.cshtml tôi:

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
     // Send an AJAX request 
     $.getJSON("api/food/", 
     function (data) { 
      // on success, 'data' contains a list of products 
      $.each(data, function (key, val){ 

       //format the text to display 
       var str = val.RecipeTitle + ' | ' + val.FoodCategoryID + ' | ' + val.Serves + ' | ' + val.PerServing + ' | ' + val.Favourites + ' | ' + val.Directions + ' | ' + val.BackgroundImage + ' | ' + val.HealthyTips + ' | ' + val.Nutritions + ' | ' + val.Ingredients; 

       // add a list item for the product 
       $('<li/>', { html: str }).appendTo($('#cases')); 

      }); 
     }); 
    }); 
+1

mà dấu chéo ngược được bạn đề cập đến? –

+0

dấu gạch chéo ngược = dấu gạch chéo về phía trước? –

+0

dấu gạch chéo ngược = \ dấu gạch chéo =/ – forsakenedsj

Trả lời

1

Giả sử bạn đang gọi điện thoại API, và nhận được trở lại các đối tượng JSON thường thoát:

var myObject = Foo.API.Call(); //returns object with BackgroundImage property. 

Nếu y đang lưu kết quả vào tệp văn bản, bạn có thể sử dụng JavaScriptSerializer:

var bg = new JavaScriptSerializer().Deserialize(myObject); 
using (var writer = new StreamWriter(@"C:\foo.txt")) 
{ 
    writer.Write(bg.BackgroundImage); 
} 

Tệp văn bản được lưu phải là chuỗi chưa thoát.

+0

nhưng nếu tôi muốn hiển thị bằng JSON mà không có dấu gạch chéo ngược, cái này \ thì tôi nên làm như thế nào? Nó có liên quan gì với getjson không? – forsakenedsj

+0

Xin lỗi, đã hiểu sai câu hỏi của bạn, không thấy bất kỳ dấu gạch chéo ngược nào trong bài đăng gốc. '/' cần phải được thoát trong JavaScript và JSON, do đó, '' \ '' hàng đầu là bắt buộc, nhưng sẽ biến mất khi bạn deserialize trở lại thành đối tượng CLR hoặc sẽ được hiểu đúng như một đối tượng JSON. – lukiffer

+0

Vì vậy, làm thế nào tôi sẽ đối phó với \ bởi vì nếu tôi lưu như một tập tin văn bản vẫn còn có \. Hay không có cách nào? – forsakenedsj

0

Bạn có thể sử dụng này:

string deserializedString = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(serializedString);