1

我正在使用 mvc 4 web api 构建一个始终返回 JSON 的服务层。

我的 api 方法调用实际上调用了另一个返回 JSON 对象的服务。然后我想将这个 JSON 对象作为我的返回对象传回,但我不确定要使用什么返回类型。

如果我使用字符串,它会将 JSON 对象用引号括起来。

顺便说一句,我已经将默认的 MediaTypeFormatter 更改为 JSON。

这是 JSON 对象的示例:

{
  "responseHeader":{
  "status":0,
   "QTime":0,
   "params":{
     "indent":"on",
     "q":"id:100001",
     "wt":"json"}},
  "response":{"numFound":1,"start":0,"docs":[
  {
    "Header":"Test Header",
    "MaxPrice":515.0,
    "ApartmentName":"Apartment 1",
    "MaxBathrooms":4.0,
    "Pool":true,
    "MinBathrooms":2.0,
    "MaxBedrooms":4,
    "CoveredParking":false}]
  }}
4

3 回答 3

7

在 Beta 版本中,您可以使用JsonValue(来自 System.Json 命名空间)。如果您对其他服务的调用返回一个包含 JSON 数据的字符串,那么您可以调用JsonValue.Parse将其加载到要返回的对象中。

在 RC 版本(或来自http://aspnetwebstack.codeplex.com的当前位)中,您可以使用该JToken对象(来自 Newtonsoft.Json.Linq 命名空间) - 默认 JSON 序列化程序和 JSON DOM 现在来自 JSON .NET 库。

于 2012-05-09T18:52:28.153 回答
0

所以,问题原来是我正在获取一个序列化的 json 对象,然后在覆盖默认 xml MediaTypeFormatter 的 JavaScriptSerializerFormatter 中重新序列化。

我通过返回 JsonValue 然后检查类型而不是重新序列化它来解决这个问题。

感谢 carlosfigueira 帮助找到这个。

于 2012-05-10T15:18:04.357 回答
-2

要从 MVC 返回 Json,请使用 JsonResult。您可以先使用 DataContractJsonSerializer 将字符串转换为对象。

http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/

于 2012-05-09T18:53:42.020 回答