JSON序列化和反序列化ASP.NET中的:
JSON是一种数据格式,这是网站上的JavaScript运行的设计师。 JSON是目前广泛使用的网络。本文重点介绍的JSON序列化和反序列化ASP.NET中,包括JSON的简要介绍,如何序列化和反序列化与ASP.NET和日期,装配,字典操作。1。 JSON的简要介绍
JSON(JavaScript对象符号)是一个轻量级的数据交换格式。
JSON是quot;名称/ valuequot;大会。其结构是由{},[],逗号,冒号和双引号。它包括以下数据类型:对象,数量,布尔,字符串,数组,空。
JSON有三种样式:对象:一个无序的quot;名称/ valuequot;大会。一个对象开始quot; {",结束quot;} quot;每个quot; namequot;的背后,有一个冒号。逗号分开多quot;名称/ valuequot;例如:
数组:价值秩序集。一个数组开始quot; [quot; quot结束;]"。和值用逗号隔开。例如:{C}字符串:任何数量的Unicode字符集,这是与引号。它使用反斜杠来转义。2。序列化和反序列化JSON数据var user={"name":"Tom","gender":"Male","birthday":"1983-8-8"}
我们可以使用的DataContractJsonSerializer JSON字符串序列化类型的实例和反序列化JSON字符串类型的实例。的DataContractJsonSerializer是根据System.Runtime.Serialization.Json命名空间。它包含在System.ServiceModel.Web.dll。NET框架3.5和System.Runtime.Serialization在的。NET Framework 4.0中。我们需要添加它作为参考。使用DataContractJsonSerialize序列化和反序列化的代码
序列化示范 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Text;
/// <summary>
/// JSON Serialization and Deserialization Assistant Class
/// </summary>
public class JsonHelper
{
/// <summary>
/// JSON Serialization
/// </summary>
public static string JsonSerializer<T> (T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
/// <summary>
/// JSON Deserialization
/// </summary>
public static T JsonDeserialize<T> (string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}
}
简单对象人:{体C3}
序列化为JSON字符串:{的C4}导致{C5的}reserialization演示{5233}导致
{S0的}
在ASP.NET中,可以使用JSON serializaation和反序列化的JavaScriptSerializer System.Web.Script.Serialization命名空间下。我们需要添加作为参考或使用JSON.NET的System.Web.Extensions.dll。3。对DateTime的JSON序列化和反序列化
JSON不能直接支持日期和时间。 DateTime值显示为quot ;/日期(70万0500)的/ quot;第一号(700000)根据基地在GMT时间(不saylight节约时间),从1970年1月1日,以毫秒为单位。这个数字可以是负数,1970年1月1日之前提出的时间。部分quot; 0500quot;是可选的。它提出的时间是本地的,换句话说,它可以转换为本地时区时,反序列化。如果这部分不存在,时间为UTC将被序列化。修改人,并添加LastLoginTime{C7-}{C8的}导致序列化
一,更换背景的正则表达式和修改JsonHelper的{C10的}序列化示范{C11的}导致{C12的}反序列化示范{"Age":28,"LastLoginTime":"\/Date(1319266795390+0800)\/","Name":"Tom"}
导致string json = "{\"Age\":28,\"LastLoginTime\":\"2011-10-22 14:55:00\",\"Name\":\"Tom\"}";
p=JsonHelper.JsonDeserialize<person>(json);
{S}使用JavaScript
简单演示 function ChangeDateFormat(jsondate) {
jsondate = jsondate.replace("/Date(", "").replace(")/", "");
if (jsondate.indexOf("+") > 0) {
jsondate = jsondate.substring(0, jsondate.indexOf("+"));
}
else if (jsondate.indexOf("-") > 0) {
jsondate = jsondate.substring(0, jsondate.indexOf("-"));
}
var date = new Date(parseInt(jsondate, 10));
var month = date.getMonth() + 1 < 10 ?
"0" + (date.getMonth() + 1) : date.getMonth() + 1;
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return date.getFullYear() + "-" + month + "-" + currentDate;
}
导致{C16的}4。 JSON序列化和反序列化大会,词典和阵列配置ChangeDateFormat("\/Date(1319266795390+0800)\/");
JSON数据,所有的组件,字典和数组阵列。名单序列{C17的}序列结果{C18的}
词典不能用于直接在JSON。如果我们要转换到JSON的词典,我们应该采取字典的键名称quot值;重点的作为quot价值价值词典; Valuequot。例如:{C19的}序列结果{C20的}参考JSON的:独立JSON序列化:序列化和反序列化JSON数据:{A2的}建议(关于ASP.NET技巧){A3的}{A4纸}