C# Web API の戻り値の型を json に設定する 2 つの方法
API インターフェイスを作成する場合、Web API はデフォルトでオブジェクトをシリアル化して XML 形式で返します。次に、2 つの方法を示します。
方法 1: (設定メソッドを変更する)
検索します。 Global.asax ファイルを編集し、Application_Start() メソッドに文を追加します。
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
変更後:
<br>protected void Application_Start() <br>{ <br>AreaRegistration.RegisterAllAreas(); <br>WebApiConfig.Register(GlobalConfiguration.Configuration); <br>FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); <br>RouteConfig.RegisterRoutes(RouteTable.Routes); <br>// 使api返回为jsonGlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();} <br>
この方法で返される結果はすべて json 型ですが、返される結果が String である場合には欠点があります。 type (123 など) の場合、返される json は「123」になります
解決策は、戻り値の型をカスタマイズすることです (戻り値の型は HttpResponseMessage です)
public HttpResponseMessage PostUserName(User user) { String userName = user.userName; HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(userName,Encoding.GetEncoding("UTF-8"), "application/json") }; return result; }
方法 2: (万能メソッド)
方法1も必要です 設定を変更して戻り値がString型のjsonを処理するのは非常に面倒なので、Web APIでは自動シリアル化オブジェクトを使わずに自分でシリアル化して返す方が良いです
public HttpResponseMessage PostUser(User user) { JavaScriptSerializer serializer = new JavaScriptSerializer(); string str = serializer.Serialize(user); HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") }; return result; }
メソッド。 2 は、すべてのインターフェイスで数行のコードを繰り返し記述するよりも、メソッドにカプセル化する方がはるかに便利な方法です。
public static HttpResponseMessage toJson(Object obj) { String str; if (obj is String ||obj is Char) { str = obj.ToString(); } else { JavaScriptSerializer serializer = new JavaScriptSerializer(); str = serializer.Serialize(obj); } HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") }; return result; }
方法 3: (最も面倒な方法)
方法 1 は最も単純ですが、あまりにも致命的です。その場合、メソッド 3 は API インターフェイスでのみ強制終了されます。 return json
まず、戻り値を処理するクラスを作成します:
public class JsonContentNegotiator : IContentNegotiator { private readonly JsonMediaTypeFormatter _jsonFormatter; public JsonContentNegotiator(JsonMediaTypeFormatter formatter) { _jsonFormatter = formatter; } public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters) { var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json")); return result; } }
App_Start で WebApiConfig.cs ファイルを見つけて開き、Register(HttpConfiguration config) メソッドを見つけます
次のコードを追加します:
var jsonFormatter = new JsonMediaTypeFormatter(); config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
追加後のコード
<br>public static void Register(HttpConfiguration config) <br>{ <br>config.Routes.MapHttpRoute( <br>name: "DefaultApi", <br>routeTemplate: "api/{controller}/{action}/{id}", <br>defaults: new { id = RouteParameter.Optional } <br>);var jsonFormatter = new JsonMediaTypeFormatter(); onfig.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));} <br>
方法 3 返された結果が 123 などの String 型の場合、返される json は「123」になります。解決策は方法 1 と同じです。
実際、Web API は返されたオブジェクトを xml 形式と json 形式が混在する形式に自動的に変換します。方法 1 と 3 は xml 戻り値を排除し、方法 2 は戻り値をカスタマイズします。
上記は、C# Web API の戻り値の型を json に設定する 2 つの方法の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
