ASP.NET Core Web Apiでデータを返すAFAIKの標準的な方法は、IActionResult
を使用して、たとえばOkObject
の結果。これはオブジェクトでは問題なく機能しますが、何らかの方法でJSON文字列を取得し、そのJSONを呼び出し元に返したい場合はどうなりますか?
例えば.
public IActionResult GetSomeJSON()
{
return Ok("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }");
}
ここでASP.NET Coreが行うことは、JSON文字列を取得し、それを再びJSONにラップします(たとえば、JSONをエスケープします)
[Produces("text/plain")]
でプレーンテキストを返すことは、「RAW」コンテンツを提供することで機能しますが、応答のコンテンツタイプをJSONではなくPLAINに設定します。コントローラーで[Produces("application/json")]
を使用します。
エスケープされずに、通常のJSONコンテンツタイプとして持っているJSONを返すにはどうすればよいですか?
注:JSON文字列がどのように取得されたかは関係ありません。サードパーティサービスからのものである可能性があります。または、デフォルトのJSON.NETを使用する代わりにカスタムシリアル化を行うために、特別なシリアル化の必要性がありますシリアライザー
そしてもちろん、質問を投稿してから数分後、私は解決策を見つけました:)
コンテンツタイプapplication/json
でContent
を返すだけです...
return Content("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }", "application/json");
アクションで、Ok()
をContent()
メソッドに置き換えます。これにより、応答のコンテンツ(未処理コンテンツ)、コンテンツタイプ、およびステータスコードを設定できます。 https:// docs。 Microsoft.com/en-us/dotnet/api/Microsoft.aspnetcore.mvc.contentresult?view=aspnetcore-2.