一、JSON简介
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。
JSON是“名值对”的集合。结构由大括号'{}',中括号'[]',逗号',',冒号':',双引号'“”'组成,包含的数据类型有Object,Number,Boolean,String,Array, NULL等。
JSON具有以下的形式:
对象(Object)是一个无序的“名值对”集合,一个对象以”{”开始,”}”结束。每个“名”后跟着一个”:”,多个“名值对”由逗号分隔。如:
{"FirstName":"Jason","LastName":"Chen"}
数组(Array)是值的有序集合,一个数组以“[”开始,以“]”结束,值之间使用“,”分隔。如:
[{"FirstName":"Jason","LastName":"Chen"},{"FirstName":"Jason","LastName":"Chen"}]
字符串(String)是由双引号包围的任意数量的Unicode字符的集合,使用反斜线转义。
二、对数据进行序列化
可以使用JavaScriptSerializer类将类型实例序列化为JSON字符串。
利用JavaScriptSerializer序列化的代码:
using System;using System.Collections.Generic;using System.Data;using System.Text.RegularExpressions;using System.Web.Script.Serialization;/* * JavaScriptSerializer在System.Web.Script.Serialization命名空间下。 * create by cjj on 2014-10-08;email:ijasonchen91@sina.com */namespace mob{ ////// JSON序列化和反序列化辅助类 /// public static class JsonHelper { ////// JSON序列化 /// /// 源对象 ///json数据格式 public static string ToJson(object obj) { JavaScriptSerializer serialize = new JavaScriptSerializer(); return serialize.Serialize(obj); } ////// 将字符串数组转换为json数据格式:["value1","value2",...] /// /// 字符串数组 ///json数据格式 public static string ToJson(this string[] strs) { return ToJson((object)strs); } ////// 将DataTable数据源转换为json数据格式:[{"ColumnName":"ColumnValue",...},{"ColumnName":"ColumnValue",...},...] /// /// DataTable数据源 ///json数据格式 public static string ToJson(this DataTable dt) { List
简单对象Person:
[DataContract]public class Person{ public Person() { } public Person(string firstname, string lastname, DateTime birthday) { this.FirstName = firstname; this.LastName = lastname; this.Birthday = birthday; } [DataMember] public string FirstName { get; set; } [DataMember] public string LastName { get; set; } [DataMember] public DateTime Birthday { get; set; }}
三、JSON序列化集合、字典、数组、DataTable的处理
可以使用JavaScriptSerializer类Serialize方法将数据源例序列化为JSON字符串。
在JSON数据中,所有的集合、字典、TataTable和数组都表示为数组。
(1)List<T>序列化:
private void Serialize(){ Listlist = new List (){ new Person("Jason", "Chen", Convert.ToDateTime("1991-05-04")), new Person("Jack", "Chen", Convert.ToDateTime("1991-05-05")) }; string jsonString = JsonHelper.ToJson(list).ConvertToDateTimeString(); Response.Write(jsonString);}
序列化结果:
[{"FirstName":"Jason","LastName":"Chen","Birthday":"1991-05-0400:00:00"},{"FirstName":"Jack","LastName":"Chen","Birthday":"1991-05-0500:00:00"}]
(2)Dictionary字典转化为JSON并不是跟原来的字典格式一致,而是形式以Dictionary的Key作为名称”Key“的值,以Dictionary的Value作为名称为”Value“的值。如:
private void Serialize(){ Dictionarydic = new Dictionary (); dic.Add("FirstName", "Jason"); dic.Add("LastName", "Chen"); string jsonString = JsonHelper.ToJson(dic); Response.Write(jsonString);}
序列化结果:
{"FirstName":"Jason","LastName":"Chen"}
(3)String数组序列化:
private void Serialize(){ string[] ss = new string[] { "老婆", "小三" }; string jsonString = ss.ToJson(); Response.Write(jsonString);}
序列化结果:
["老婆","小三"]
(4)DataTable序列化:
private void Serialize(){ DataTable dt = new DataTable(); dt.Columns.Add("Id"); dt.Columns.Add("Name"); dt.Columns.Add("Age"); dt.Rows.Add("1", "老婆", "40"); dt.Rows.Add("2", "小三", "20"); string jsonString = dt.ToJson(); Response.Write(jsonString);}
序列化结果:
[{"Id":"1","Name":"老婆","Age":"40"},{"Id":"2","Name":"小三","Age":"20"}]
版权声明:本文为博主原创文章,未经博主允许不得转载。