ホームページ >ウェブフロントエンド >jsチュートリアル >Json のシリアル化および逆シリアル化メソッド分析_jquery

Json のシリアル化および逆シリアル化メソッド分析_jquery

WBOY
WBOYオリジナル
2016-05-16 17:08:081430ブラウズ

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

///
/Json シリアル化。クライアントに送信するために使用されます。
/// & lt;/概要 & gt;
public Stration tojsjson (このオブジェクト項目)
{

DataContractJsonSerializer シリアライザー = new DataContractJsonSerializer(item.GetType());

(MemoryStream ms = new MemoryStream()) を使用
{

serializer.WriteObject(ms, item);

StringBuilder sb = new StringBuilder();

sb.Append(Encoding.UTF8.GetString(ms.ToArray()));

return sb.ToString();

}

}

;T>(この文字列 jsonString)
{

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

T jsonObject = (T)ser.ReadObject(ms);

ms.Close();

jsonObject を返します;

}

エンティティ クラス



コードをコピー コードは次のとおりです。 [DataContract]
public class TestObj
{
[DataMember]
public string make { get; }
public string model { get; 🎜> , >---------------------JavaScript が Json を取得します---------------------

JavaScript はテスト コードを呼び出します




コードをコピーします


コードは次のとおりです:

$('#getJson').click(function() {
$.ajax({
url: "getJsonHandler.ashx",
タイプ: 'GET'、
データ: {},
dataType: 'json',
タイムアウト: 1000,
エラー関数(X) MLHttpRequest, textStatus, errorThrown) {alert(textStatus) },
success: function(result) ) {

アラート(result.make);
アラート(result.model);
アラート(結果.年);
alert(result.color);
}

});
});


C#后台生成代码
复制代 代コード如下:

public class getJsonHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
TestObj obj = new TestObj();

obj.make = "メイクは価値である";
obj.model = "モデルは価値である";
obj.year = 999;
obj.color = "色は価値である";

context.Response.Write(obj.ToJsJson());
}
public bool IsReusable
{
get
{
return false;
}
}
}

//返值範囲 {"color":"カラーは値","make":"メイクは値","モデル":"モデルは値","年":999}


-----------------C#由Json生成对オブジェクト-----------------------

javascript调用测试代码

复制代码代码如下:

$('#postJson').click(function() {

var m_obj = { メーカー: "ダッジ"、モデル: "コロネット R/T"、年式: 1968、色: "イエロー" };
var jsonStr = JSON.stringify(m_obj); //Json2.js 生成Json字符串

$.ajax({
url: "postJsonHandler.ashx",
'POST',
データ: { postjson: jsonStr },
dataType: 'json',
タイムアウト: 1000,
エラー: function(XMLHttpRequest, textStatus, errorThrown) {alert(textStatus) },
成功: function(result) >

alert(result.success);

}

});

});

C#后台生成代码

夹制代代コード如下:
public class postJsonHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string jsonStr = context.Request["postjson"] ;
TestObj obj = jsonStr.FromJsonTo();

if (string.IsNullOrEmpty(obj.make) || string.IsNullOrEmpty(obj.model) || string.IsNullOrEmpty(obj.color)

||オブジェクト年 {
context.Response.Write("{success:false}");
}
else
{
context.Response.Write("{success:true }");
}
public bool IsReusable

{
get
{
return false;
}
}


Json を使用する場合は注意が必要です、サービス端末拼凑生成 Json 文字列時、必須注意ハンドル文字列用"" 包裹、不然ゲスト端末受信時肯定会报错、ベース Json 文字列生成オブジェクト、は对应の名前赋値に基づいています、以上または以下です不会报错。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。