Возврат JObject как Json из конечной точки - PullRequest
4 голосов
/ 26 апреля 2011

Я бы хотел сделать что-то вроде этого:

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

Я пытался преобразовать taxonomyJson в JToken и другие свойства. Я пробовал оборачивать и т. Д. Но он всегда выдает ошибки.

Конечно, я могу вернуть taxonomyJson.ToString(), но мне это не очень нравится, потому что тогда он оборачивает дополнительную двойную квоту вокруг моей строки, которую мой JavaScript должен будет удалить перед вызовом JSON.parse().

Если Json() может обрабатывать сериализуемые объекты, почему он не может обработать JObject или JToken, для которого уже подготовлен JSON?

Ответы [ 3 ]

12 голосов
/ 26 апреля 2011

Как насчет:

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

И это для массива:

var jObject = JObject.FromObject(new { Payload = arrayOfJObjects });
return Content(jObject.ToString(), "application/json");
0 голосов
/ 26 апреля 2011

Вы можете создать вспомогательный метод для работы на стороне сервера, например

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;
      }
}
0 голосов
/ 26 апреля 2011

Он действительно предназначен для обработки объекта taxonomy, который у вас уже есть, нет необходимости конвертировать его с помощью одного сериализатора Json (Json.NET), чтобы использовать другой (System.Web.Javascript.Serializer) для отправки его по проводам. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...