9 votes

Renvoi d'un JObject en tant que Json à partir d'un point de terminaison

J'aimerais faire quelque chose comme ça :

var taxonomyJson = JObject.FromObject(taxonomy);
return Json(taxonomyJson, JsonRequestBehavior.AllowGet);

J'ai essayé de convertir taxonomyJson à un JToken et diverses autres propriétés. J'ai essayé de l'emballer, etc. Mais il y a toujours des erreurs.

Bien sûr, je peux retourner taxonomyJson.ToString() mais je n'aime pas trop cela, car il s'agit alors d'un double quota supplémentaire autour de ma chaîne de caractères que mon JavaScript devra enlever avant d'appeler JSON.parse() sur elle.

Si Json() peut gérer des objets sérialisables, pourquoi ne peut-elle pas gérer une JObject ou un JToken qui a le JSON déjà préparé ?

17voto

Darin Dimitrov Points 528142

Pourquoi pas :

return Content(taxonomyJson.ToString(), "application/json");

Et ceci pour un tableau :

var jObject = JObject.FromObject(new { Payload = arrayOfJObjects });
return Content(jObject.ToString(), "application/json");

0voto

Wyatt Barnett Points 12541

Il est vraiment destiné à gérer le taxonomy que vous avez déjà, il n'est pas nécessaire de le convertir en utilisant un sérialiseur Json (Json.NET) pour en utiliser un autre (System.Web.Javascript.Serializer) afin de l'envoyer sur le câble.

0voto

smartcaveman Points 15610

Vous pourriez créer une méthode d'aide pour effectuer cette opération côté serveur, par exemple

public static class JSON{
      public static string ToJavaScriptObject(this object @object){
          var jobject =  JObject.FromObject(@object).ToString();
          jobject = jobject.Substring(1);
          jobject = jobject.Substring(0,jobject.Length-1);
          return jobject;
      }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X