怎样在ASP.NET中应用编码序列化和反编码序列化?

公布   --中成网建   一、JSON介绍

JSON(JavaScript Object Notation,JavaScript目标表明法)是一种轻量的数据信息互换文件格式。

JSON是 名值对 的结合。构造由大括弧 {} ,中括弧 [] ,分号 , ,冒号 : ,双引号 构成,包括的数据信息种类有Object,Number,Boolean,String,Array, NULL等。

JSON具备下列的方式:

目标(Object)是一个混乱的 名值对 结合,一个目标以 { 刚开始, } 完毕。每一个 名 后跟随一个 : ,好几个 名值对 由分号隔开。如:

var user={ name : 张三 , gender : 男 , birthday : 1980-8-8 }

数字能量数组(Array)是值的井然有序结合,一数量组以 [ 刚开始,以 ] 完毕,值中间应用 , 隔开。如:

var userlist=[{ user :{ name : 张三 , gender : 男 , birthday : 1980-8-8 }},{ user :{ name : 李四 , gender : 男 , birthday : 1985-5-8 }}];

标识符串(String)是由双引号包围着的随意总数的Unicode标识符的结合,应用反斜线转义。

二、对JSON数据信息开展编码序列化和反编码序列化

可使用DataContractJsonSerializer类将种类案例编码序列化作JSON标识符串,并将JSON标识符串反编码序列化作种类案例。 DataContractJsonSerializer在System.Runtime.Serialization.Json取名室内空间下,.NET Framework 3.5包括在System.ServiceModel.Web.dll中,必须加上对其的引入;.NET Framework 4在System.Runtime.Serialization中。

运用DataContractJsonSerializer编码序列化和反编码序列化的编码:

  1: using System;

  2: using System.Collections.Generic;

  3: using System.Linq;

  4: using System.Web;

  5: using System.Runtime.Serialization.Json;

  6: using System.IO;

  7: using System.Text;

  8: 

  9: /// summary

  10: /// JSON编码序列化和反编码序列化輔助类

  11: /// /summary

  12: public class JsonHelper

  13: {

  14:  /// summary

  15:  /// JSON编码序列化

  16:  /// /summary

  17:  public static string JsonSerializer T (T t)

  18:  {

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

  20:  MemoryStream ms = new MemoryStream();

  21:  ser.WriteObject(ms, t);

  22:  string jsonString = Encoding.UTF8.GetString(ms.ToArray());

  23:  ms.Close();

  24:  return jsonString;

  25:  }

  26: 

  27:  /// summary

  28:  /// JSON反编码序列化

  29:  /// /summary

  30:  public static T JsonDeserialize T (string jsonString)

  31:  {

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

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

  34:  T obj = (T)ser.ReadObject(ms);

  35:  return obj;

  36:  }

  37: }

编码序列化Demo:

简易目标Person:

  1: public class Person

  2: {

  3:  public string Name { get; set; }

  4:  public int Age { get; set; }

  5: }

编码序列化作JSON标识符串:

  1: protected void Page_Load(object sender, EventArgs e)

  2: {

  3:  Person p = new Person();

  4:  p.Name = 张三

  5:  p.Age = 28;

  6: 

  7:  string jsonString = JsonHelper.JsonSerializer Person

  8:  Response.Write(jsonString);

  9: }

輸出結果:

{ Age :28, Name : 张三 }

反编码序列化Demo:

  1: protected void Page_Load(object sender, EventArgs e)

  2: {

  3:  string jsonString = {\ Age\ :28,\ Name\ :\ 张三\ }

  4:  Person p = JsonHelper.JsonDeserialize Person (jsonString);

  5: }

运作結果:

ASP.NET中的JSON编码序列化和反编码序列化还能够应用JavaScriptSerializer,在 System.Web.Script.Serializatioin取名室内空间下,需引入System.Web.Extensions.dll.还可以应用 JSON.NET.

三、JSON编码序列化和反编码序列化时间時间的解决

JSON文件格式不立即适用时间和時间。DateTime值值显示信息为 /Date(700000+0500)/ 方式的JSON标识符串,在其中第一数量字(在提 供的实例中为 700000)是 GMT 时区中自 1970 年 1 月 1 日午夜至今按一切正常時间(非夏令时)历经的毫秒数。该数据能够是负数,以表明以前的時间。实例中包含 +0500 的一部分可选择,它标示该時间归属于Local 种类,即它在反编码序列化时要变换为当地时区。假如沒有该一部分,则会将時间反编码序列化作Utc。

改动Person类,加上LastLoginTime:

  1: public class Person

  2: {

  3:  public string Name { get; set; }

  4:  public int Age { get; set; }

  5:  public DateTime LastLoginTime { get; set; }

  6: }

  1: Person p = new Person();

  2: p.Name = 张三

  3: p.Age = 28;

  4: p.LastLoginTime = DateTime.Now;

  5: 

  6: string jsonString = JsonHelper.JsonSerializer Person

 

上一页12下一页