Comment sérialiser un champ JSON brut?

J’ai un champ dans la firebase database qui stocke une chaîne JSON et je veux que lorsque je le retourne dans un résultat JSON, il sera renvoyé sous forme de données brutes Json et non déformé avec des guillemets comme chaîne.

UPDATE 1 (More Info): si vous regardez le champ images, il contient une valeur de chaîne json brute
mais après l’avoir sérialisé avec le JsonResult, il est faussé avec des guillemets, car c’est un type de chaîne, comment puis-je demander au sérialiseur de traiter le champ images comme une donnée brute?

var db = new ModelsContainer(); var res = db.Images.OrderByDescending(i=>i.DateCreated).Skip(skip).Take(take).Select( i => new { id = i.Id, dateCreated = i.DateCreated, images = i.Images , user = new { id = i.User.Id, facebookId = i.User.FacebookId, displayName = i.User.DisplayName }, tags = i.Tags.Select( t => t.Value ) }).ToList(); return Json(res, JsonRequestBehavior.AllowGet); [ { "id":"5c528e88-f3a7-4b30-9746-980867325fd1", "dateCreated":"\/Date(1364381593000)\/", "images":"[{\"source\":\"http://localhost:9242/images/f4956702/6d34/42db/b28a/397d0eaf3097.jpg\",\"width\":237,\"height\":237},{\"source\":\"http://localhost:9242/images/87d47041/1522/4d10/9325/105851aae259.jpg\",\"width\":633,\"height\":633},{\"source\":\"http://localhost:9242/images/2a639272/9067/42fb/83ee/e88f0a0878f8.jpg\",\"width\":547,\"height\":547},{\"source\":\"http://localhost:9242/images/37caa7b2/e183/4efc/96eb/487e556501b2.jpg\",\"width\":1024,\"height\":1024}]", "user":{"id":"ea39616d-6ff9-424b-b99b-7bee53e674bb","facebookId":"608215901","displayName":"Yonathan Garti"}, "tags":["test","test","test"] }, ... ] 

Avec Json.net, vous pouvez définir vos propres convertisseurs Json pour appliquer un comportement de sérialisation spécifique. Vous pouvez l’appliquer à un type spécifique ou, si vous avez un modèle de vue, à une propriété spécifique.

Dans votre cas, vous voulez écrire la chaîne Images sous forme de chaîne brute à l’aide de JsonWriter.WriteRawValue .

C’est à dire.

 public class PlainJsonSsortingngConverter : Newtonsoft.Json.JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeof(ssortingng); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return reader.Value; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteRawValue((ssortingng)value); } } public class MyViewModel { public ssortingng id { get; set; } [Newtonsoft.Json.JsonConverter(typeof(PlainJsonSsortingngConverter))] public ssortingng images { get; set; } /* ... */ } 

Vous devrez désérialiser les données. C # offre une classe pour gérer les données JSON.

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx

Extrait de http://msdn.microsoft.com/en-us/library/bb412179.aspx :

Normalement, la communication et la désérialisation JSON sont gérées automatiquement par Windows Communication Foundation (WCF) lorsque vous utilisez des types de contrat de données dans des opérations de service exposées sur des points de terminaison compatibles AJAX. Toutefois, dans certains cas, vous devrez peut-être travailler directement avec des données JSON – c’est le scénario illustré par cette rubrique.

 //Deserialize the JSON-encoded data into a new instance of Person by using the ReadObject method of the DataContractJsonSerializer. stream1.Position = 0; Person p2 = (Person)ser.ReadObject(stream1); //Show the results. Console.Write("Deserialized back, got name="); Console.Write(p2.name); Console.Write(", age="); Console.WriteLine(p2.age);