从端点返回JObject作为Json

时间:2011-04-26 18:25:36

标签: c# asp.net-mvc json json.net

我想做这样的事情:

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

我尝试将taxonomyJson转换为JToken和其他各种属性。我尝试过包装等等。但它总会引发错误。

当然,我可以返回taxonomyJson.ToString(),但我不太喜欢它,因为它在我的字符串周围包含额外的双倍配额,我的JavaScript必须在调用JSON.parse()之前将其剥离在它上面。

如果Json()可以处理可序列化的对象,为什么它不能处理已准备好JSON的JObjectJToken

3 个答案:

答案 0 :(得分:12)

怎么样:

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

这是一个数组:

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

答案 1 :(得分:0)

它真的意味着处理你已经拥有的taxonomy对象,不需要使用一个Json序列化器(Json.NET)转换它来使用另一个(System.Web.Javascript.Serializer)将其发送下来电线。

答案 2 :(得分:0)

您可以创建一个辅助方法来执行此服务器端,如

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