簡體   English   中英

C#MVC 4 Web API-從JSON字符串返回對象

[英]c# MVC 4 Web API - Return object from JSON string

我正在使用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}]
  }}

在Beta版本中,可以使用JsonValue (來自System.Json命名空間)。 如果對其他服務的調用返回了包含JSON數據的字符串,則可以調用JsonValue.Parse將其加載到對象中以返回。

在RC版本中(或在http://aspnetwebstack.codeplex.com中的當前位中),您可以使用JToken對象(來自Newtonsoft.Json.Linq命名空間)-默認的JSON序列化程序和JSON DOM現在來自。 JSON.NET庫。

要從MVC返回Json,請使用JsonResult。 您可以首先使用DataContractJsonSerializer將字符串轉換為對象。

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

因此,問題出在我先獲取一個序列化的json對象,然后在覆蓋默認XML MediaTypeFormatter的JavaScriptSerializerFormatter中重新序列化。

我通過返回JsonValue然后檢查類型而不重新序列化來解決此問題。

感謝carlosfigueira對找到此內容的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM