JSON - Webサービス

クエリAJAX Webサービス:GETとPOST 
、GETの道 
クライアントを 

コードのコピー コードを次のとおりです。

VARデータ= {classCode: "0001 "}; // 直接JOSNは、オブジェクトをここに 
({$アヤックスの 
種類: "GET"、 
contentTypeの: "ファイルアプリケーション/ JSON;のcharset = UTF-8"、 
URL:「/ Webサービス/ ProductPropertyWebService.asmx / GetProductPropertyList " 
データ型:" JSON」、 
anysc:falseに、 
データ:データ、 
成功:RenderProperties、 
エラー:機能(XMLHttpRequestを、textStatus、errorThrown){ 
アラート(errorThrown + ':' + textStatus); //エラー処理 

})。 


サーバー側 
のコード 

コードのコピー コードを次のとおりです。

[ScriptMethod(ResponseFormat.Json ResponseFormat =、= UseHttpGet trueに)] // = UseHttpGet真の 
パブリックリスト<プロパティ> GetProductPropertyList() 

文字列classCode HttpContext.Current.Request = [ "classCode"]; //取得実施例にクエリ得られた文字列パラメータ値 
戻りPropertyManager.GetPropertySet(classCode、 "CN-ZH")データリスト;. 


二、POSTモードの 
クライアント 
コード 

コードのコピー コードを次のとおりです。

VARデータ= '{classCode: " ' + classCode + '"、市: "広東省"}'; // JOSN文字列にスプライスここで使用される 
$のアヤックス({ 
タイプ: "POST"、 
contentTypeの:「ファイルアプリケーション/ JSON;のcharset = UTF-8 "。 
URL:" /WebServices/ProductPropertyWebService.asmx/GetProductPropertyList " 
データ型:" JSON " 
anysc:falseに、 
データ:データ、ポスト//実施形態は、データパラメータは空白にすることはできません"」、もしパラメータは、それ以外の場合はcontentTypeのにリクエストヘッダを添付することはできません、また、 "{}"のように書かれ、通過しない。 
成功:RenderProperties、 
エラー:関数(XMLHttpRequestを、textStatus、errorThrown){ 
アラート(errorThrown +を':' + textStatus); //エラー処理 

})。 


サーバー側 
のコード 

コードのコピー コードを次のとおりです。

[ScriptMethod(ResponseFormat.Json ResponseFormat =、= UseHttpGet falseに)] falseに// = UseHttpGet 
公衆リスト<プロパティ> GetProductPropertyList(classCode文字、文字列市)//ポストの実施形態では、直接かつ自動的に割り当て、JSONに対応するパラメータフィールドのプロパティ 

リターンPropertyManager.GetPropertySet(classCode、 "CN-ZH")データリスト;. 


注:パラメータ値が(中国語など)のASCII文字でない場合、GETメソッドとPOSTメソッド、時間のパラメータはencodeURIにGETパラメータは、コーディング、又はサービスデータが文字化けしている受信、があります。 
複合データは、JSONの送信 
{:Yangjun、年齢:名27のような単純なJSONデータ形式を  }
:{名:yangjun、年齢:データフォーマットJSON錯体、JSONのような、ネストされただけであり 27、子供:[{名前:yangke、年齢:1}、  2}]}:{名:yangbin、年齢
データフォーマットは、このような複雑なJSONの配列に、形式に応じて、次にウェブサービスJSON文字列に提出し得ることである場合。ネットのオブジェクトは、どのようにそれを行うには? 
たとえば、私は次のようなデータ提出したい 
クライアント: 
コード 

コードのコピー コードを次のとおりです。

errorThrown){ 警告(errorThrown + '' +テキストの状態)。  })。 














:サーバー側の 
デシリアライズの.NETへの1をJSON文字としてオブジェクトを、より多くのオープンソースのライブラリーがあり、私は、.NETバージョン3.5を使用するヘルパークラスを作成し、DataContractJsonSerializerよりも付属しています: 
コード 

コードのコピー コードを次のとおりです。

/// <まとめ> 
/// JSONシリアライゼーションおよびデシリアライゼーションヘルパーメソッド 
/// </要約> 
パブリッククラスJsonHelper 

/// <まとめ> 
/// JSONはシリアライズ:オブジェクト形式JSONに配列をストリング 
/// </要約> 
パブリック静的文字列JsonSerializer <T>(T T) 

VAR出願新しい新しいDataContractJsonSerializer =(typeof演算(T)); 
VAR =新しい新規MSのMemoryStream(); 
ser.WriteObject(MS、T)。 
Encoding.UTF8.GetString JSONString =列(ms.ToArray()); 
ms.Close() 
;戻りJSONString 

/// <概要> 
デシリアライズに、JSON文字列形式:/// JSONをデシリアライズオブジェクト 
/// </要約> 
パブリック静的JsonDeserialize T <T>(文字列JSONString) 

VaRのSER =新しいDataContractJsonSerializer(typeof演算(T)); 
VARミリ秒=新しいのMemoryStream(Encoding.UTF8.GetBytes(jsonString)); 
VAR OBJ =(T)ser.ReadObject(MS)。 
OBJ返します。 


図2に示すように、それぞれがので、2つのオブジェクトクラス、クラスとプロパティ修飾子フィールドを上記各音符構築するために、オブジェクトにデシリアライズするので: 
コード 

コードのコピー コードを次のとおりです。

【のDataContract] 
publicクラスMProductProperty 

[データメンバー(注文= 0、IsRequiredこの=真)] 
パブリックINTのProductId {セット。取得する;
[データメンバー(注文= 1、IsRequiredこの=真)] 
パブリックリスト<MProperty>のpropertylist {セット。取得する;

publicクラスMProperty 

[データメンバー(= 0次、IsRequiredこの=真)] 
パブリックINT PropertyId {セット。取得する;
[データメンバー(注文= 1、IsRequiredこの=真)] 
パブリック文字列PropertyTypeは{セット。取得する;
[データメンバー(注文= 2、IsRequiredこの=真)] 
パブリック文字列PropertyValueを{セット。取得する;


図3に示すように、データを受信して処理するウェブJSON方法: 
コード 

コードのコピー コードを次のとおりです。

[WebMethod属性] 
[(= UseHttpGet trueに)ScriptMethod] 
パブリック文字列PostProductPropertyList() 

文字列JSONString HttpContext.Current.Request = [ "のpropertylist"]; 
VAR = JsonHelper.JsonDeserialize productProperty <MProductProperty>(JSONString); // productProperty正常にデシリアライズMProductPropertyオブジェクト 
受信成功識別//リターン 
リターン「postsuccessを」; 

また、記事に興味がある可能性があります。

おすすめ

転載: www.cnblogs.com/wfy680/p/12174410.html