1

私はmvc4Web 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

ベータリリースでは、JsonValue(System.Json名前空間から)を使用できます。他のサービスへの呼び出しがJSONデータを含む文字列を返す場合は、それを呼び出しJsonValue.Parseてオブジェクトにロードし、返すことができます。

RCリリース(またはhttp://aspnetwebstack.codeplex.comの現在のビット)では、オブジェクト(Newtonsoft.Json.Linq名前空間から)を使用できますJToken-デフォルトのJSONシリアライザーとJSONDOMはJSONから取得されています.NETライブラリ。

于 2012-05-09T18:52:28.153 に答える
0

そのため、問題は、シリアル化されたjsonオブジェクトを取得し、デフォルトのxmlMediaTypeFormatterをオーバーライドする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 に答える