Eliminando la barra diagonal de la API web JSON C#

Tengo una WEB API C#, dentro de ella tengo Data que es un enlace, por ejemplo: images/Chinese/AbaloneEggCustard.jpg

pero en JSON, aparece así:

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

¿Puedo saber cómo puedo eliminar la barra oblicua? Necesito que se elimine, así que espero poder acceder a las imágenes cuando me vinculo con Azure.


Aquí están mis códigos de controlador:

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;
    }

aquí está mi código Index.cshtml:

<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'));

            });
        });
    });

preguntado el 02 de julio de 12 a las 04:07

¿A qué barra invertida te refieres? -

barra diagonal inversa = \ barra diagonal = / -

2 Respuestas

Suponiendo que está llamando a la API y recuperando el objeto JSON normalmente escapado:

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

Si está guardando el resultado en un archivo de texto, puede usar JavaScriptSerializer:

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

El archivo de texto guardado debe ser la cadena sin escape.

Respondido 16 Jul 12, 20:07

pero si quiero mostrar en JSON sin barra invertida cuál es este \, ¿cómo se supone que debo hacerlo? ¿Tiene que ver con getjson? - abandonadosj

Lo siento, entendí mal tu pregunta, no vi ninguna barra invertida en la publicación original. / debe escaparse en JavaScript y JSON, por lo que el líder \ es obligatorio, pero desaparecerá cuando vuelva a deserializar en un objeto CLR o se interpretará correctamente como un objeto JSON. - lukiffer

Entonces, ¿cómo voy a lidiar con \ porque si guardo como un archivo de texto todavía tengo \ . ¿O no hay manera? - abandonadosj

Respuesta actualizada. Deberá deserializar la respuesta de la API para recuperar la cadena si intenta escribirla en un archivo. - lukiffer

Hola, lo siento por esta respuesta tardía, acabo de actualizar mi pregunta con mis códigos getAPI. Entonces, no estoy seguro de si su código se puede implementar en mi código o no. - abandonadosj

Puedes usar esto:

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

Respondido 22 Jul 13, 20:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.