2016-08-05 6 views
13

の違いはMicrosoft.AspNetCore.Mvc名前空間内の2つのクラスがありますどのようなものです。たObjectResultとするJsonResult

両方とも返されたオブジェクトをJSON形式で変換します。

これらの違いは何ですか?それらを使用する目的は何ですか?

+0

クイック検索を得た[たObjectResultクラス(https://docs.asp.net/ projects/api/en/latest/autoapi/M Microsoft/AspNetCore/Mvc/ObjectResult/index.html#objectresult-class)、[JsonResult Class](https://docs.asp.net/projects/api/en/latest/autoapi/Microsoft/AspNetCore/Mvc/JsonResult/ index.html#jsonresult-class) – Nkosi

+0

@ Nkosiと、何も記述がない場合、どのように問題を理解するのに役立ちますか? – hcp

+0

私はそこで始まり、次に探索しました。 interwebsの周りのビットとピースを見つけることは困難ではなかった。時には、返される結果の品質に基づいて検索を吟味し、次に検索を洗練することがあります。 – Nkosi

答えて

20

JsonResultは、応答ストリームへの書き込みを担当しています。

ObjectResultを内蔵コンテンツネゴシエーションを持っIActionResultあるJSONとして指定されたオブジェクトをフォーマットIActionResultでそのExecuteResultAsyncインサイド

、フレームワークは歩いていきます利用可能なフォーマッタを介して関連するものを選択する。

フォーマッタを選択するためのロジックは、ASP.NETのWeb APIと同様であり、次の優先順位に基づいて

:ベース

  • Acceptヘッダー
  • Content-Typeヘッダ
  • 選択タイプ一致で

OkObjectResultクラス

実行は コンテンツネゴシエーションを行う場合、エンティティ本体をフォーマットし、そして 交渉及びフォーマットが成功した場合 Microsoft.AspNetCore.Http.StatusCodes.Status200OK応答を生成すること

Microsoft.AspNetCore.Mvc.ObjectResult

参照:

+0

あなたの答えをありがとう。したがって、ObjectResultはより普遍的なクラスであり、JsonResultを使用する理由はありませんか? – hcp

+0

jsonデータを返すだけなら、 'JsonResult'を使います。 APIの柔軟性を高め、さまざまなフォーマットを返すようにしたい場合、 'ObjectResult'はコンテンツのネゴシエーションを可能にします。 – Nkosi

+0

ObjectResultを使用してjsonも返さないのはなぜですか(この場合は同じスタイルになります)。この場合、JsonResultの利点は何ですか? – hcp

関連する問題