json教学,json使用方法

  json教学,json使用方法

  JSON:JavaScript对象表示法(JavaScript对象符号).

  数据是存储和交换文本信息的语法。类似XML。

  数据比可扩展置标语言更小、更快,更易解析。

  实例:

  % @ Page Language= c# AutoEventWireup= true code behind= JSON _ test。aspx。cs Inherits= Web _ softace测试。JSON。JSON _ test %

  !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0

  过渡//EN

  http://www。w3。org/TR/XHTML 1/DTD/XHTML 1-过渡。 DTD

  超文本标记语言

  xmlns= http://www。w3。 org/1999/XHTML

  head runat=server

  标题无标题页面/标题

  脚本类型=文本/javascript

  var text= { employees:[ { last name : Getes , FirstName:Bill}, {LastName:Yue , FirstName:Ace}, {LastName:Bush , first name : George }]} ;

  var obj=eval(( text ));

  /脚本

  /头

  身体

  表单id=form1

  runat=server

  部门名称:span

  id=sp_name /span br

  /年龄:span

  id=sp_age /span br

  /地址:span

  id=sp_address /span br

  /电话:span

  id=sp_phone /span /p

  % -脚本

  type= text/JavaScript var JSON对象

  ={员工:[ {

  姓名: 年月,年龄: 22 ,地址:广东

  沈正,电话: 1234567 },{

  姓名: Getes ,年龄: 52 ,地址:美国的,电话: 555-1234567 }]};

  文档。getelementbyid( sp _ name ).innerHTML

  JsonObject.employees[1].姓名;

  文档。getelementbyid( sp _ age ).innerHTML

  JsonObject.employees[1].年龄;

  文档。getelementbyid( sp _ address ).innerHTML

  JsonObject.employees[1].地址;

  文档。getelementbyid( sp _ phone ).innerHTML

  JsonObject.employees[1].电话;

  /script - %

  p名字:span

  id=sp_firstname /span br

  /姓氏:span

  id=sp_lastname /span /p

  脚本类型=文本/javascript

  文档。getelementbyid( sp _ first name ).innerHTML

  员工[0]。名字;

  文档。getelementbyid( sp _ last name ).innerHTML

  员工[0]。姓氏;

  /脚本

  /div

  形式

  身体

  超文本标记语言

  类似可扩展置标语言

  数据是纯文本

  数据具有"自我描述性"(人类可读)

  数据具有层级结构(值中存在值)

  数据可通过Java脚本语言进行解析

  数据数据可使用创建交互式、快速动态网页应用的网页开发技术进行传输

  数据序列化与反序列化

  数据的序列化需要用到DataContractJsonSerializer类,在命名空间系统运行时。序列化。数据下。网

  框架3.5需要添加系统。服务模型。网引用;网框架

  四在系统。运行时。序列化中。

  jsonhelper类:

  公共类JsonHelper {

  ///摘要///

  数据序列号////摘要

  ///typeparam

  name=T /typeparam

  ///param name=t /param

  ///返回/返回

  公共静态字符串JsonSerializa T (T t)

  {

  DataContractJsonSerializer zer=new DataContractJsonSerializer(类型为(T));

  MemoryStream ms=new

  内存流();

  零WriteObject(ms,t);

  字符串jsonstring=

  编码10 . UTF8。GetString(ms . to array());

  ms . Close();

  返回

  jsonstring

  }

  ///摘要///

  数据反序列化////摘要

  ///typeparam

  name=T /typeparam /

  //param

  name=strjson /param

  ///返回/返回

  公共静态T JsonDeserializa T(字符串strjson)

  {

  DataContractJsonSerializer zer=new DataContractJsonSerializer(类型为(T));

  MemoryStream ms=new

  内存流(编码10 . UTF8。GetBytes(str JSON));

  策尔ReadObject(毫秒);

  返回

  目标文件

  }

  }

  人类:

  公共阶层的人

  { publicstring Name { get设置;} publicint Age { get设置;}

  }

  简单实现:

  受保护的空隙

  页面加载(对象发送方,事件参数e)

  {

  人员p=

  person();

  页(第页的缩写)名称=

  ace ;

  页(第页的缩写)年龄=

  22;

  字符串json=

  JsonHelper .JsonSerializa人

  回应。写(JSON);

  }

  数据序列化处理日期类型的处理

  数据格式不直接支持日期和时间日期时间值值显示为"/日期(700000

  0500)/"形式的数据字符串,其中第一个数字(在提供的示例中为700000)是绿色时光格林尼治标准时间时区中自1970 年一月一

  日午夜以来按正常时间(非夏令时)经过的毫秒数。该数字可以是负数,以表示之前的时间。示例中包括"

  0500"的部分可选,它指示该时间属于当地的类型,即它在反序列化时应转换为本地时区。如果没有该部分,则会将时间反序列化为世界协调时。

  修改jsonhelper类需用到的名称空间:

  使用系统运行时。序列化。数据

  使用系统。木卫一;使用系统。文本;使用系统正文。正则表达式;使用系统。集合。泛型;//列表名称空间

  jsonhelper类的修改:

  公共类JsonHelper {

  ///

  summary ///json序列化///

  /摘要

  ///typeparam

  name=T /typeparam

  ///param

  name=t /param

  ///返回/返回

  公共静态字符串JsonSerializer T (T

  t)

  {

  DataContractJsonSerializer zer=new

  DataContractJsonSerializer(类型为(T));

  MemoryStream ms=new

  内存流();

  零WriteObject(毫秒

  t);

  字符串jsonstring=

  编码10 . UTF8。GetString(ms . to array());

  ms . Close();

  字符串p=

  @ /Date (( d) d ) /;

  MatchEvaluator me=new

  匹配评估器(ConvertJsonDateToDateString)

  ;Regex rg=new

  正则表达式(p);

  jsonstring=rg .Replace(jsonstring,

  我);

  返回

  jsonstring

  }

  ///summary ///json反序列化///

  /摘要

  ///typeparam

  name=T /typeparam

  ///param

  name=jsonstring /param

  ///

  退货/退货

  公共静态测试

  JsonDeserializer T(字符串

  jsonstring)

  {

  字符串p=

  @ d { 4 }- d { 2 }- d { 2 } s d { 2 }: d { 2 }: d { 2 } ;

  MatchEvaluator me=new

  匹配评估器(ConvertDateTimeToJsonDate);

  Regex rg=new

  正则表达式(p);

  jsonstring=rg .Replace(jsonstring,

  我);

  DataContractJsonSerializer zer=new

  DataContractJsonSerializer(类型为(T));

  MemoryStream ms=new

  内存流(编码10 . UTF8。GetBytes(JSON字符串));

  对象=

  泽ReadObject(毫秒);

  返回

  目标文件

  }

  ///摘要///

  将数据序列化的时间由/日期(1294499956278 0800)转为字符串///

  /摘要/

  //param

  name=m /param

  ///

  退货/退货

  私有静态字符串

  ConvertJsonDateToDateString(匹配m)

  {

  字符串结果=

  字符串。空的;

  DateTime dt=new

  DateTime(1970,1,1);

  dt=

  dt .add millisecond(long .Parse(m.Groups[1].值));

  dt=

  dt .ToLocalTime();

  结果=dt .ToString(yyyy-MM-dd

  HH:mm:ss’);

  返回

  结果;

  }

  ///摘要///

  将时间字符串转化成数据时间///

  /摘要

  ///param

  name=m /param

  ///

  退货/退货

  私有静态字符串

  ConvertDateTimeToJsonDate(匹配m)

  {

  字符串结果=

  字符串。空的;

  日期时间dt=

  日期时间Parse(m.Groups[0]).值);

  dt=

  dt .touuniversaltime();

  时间跨度ts=dt -

  日期时间parse( 1970-01-01 );

  结果=字符串。格式( /Date({ 0 } 0800) /),ts .总数毫秒);

  返回

  结果;

  }

  }

  人类的修改:

  public class Person { public string Name { get;设置;} public int Age { get设置;}公共日期时间LastLoginTime { get设置;}

  }

  实例调用及对集合、字典、数组的处理:

  保护

  void Page_Load(对象发送方,EventArgs

  e)

  {

  人物ps=新

  person();

  ps .年龄=22;

  ps .名字=Ace

  ps .LastLoginTime=

  日期时间。现在;

  线

  json=

  JsonHelper .JsonSerializer人员(ps)

  ;回应。写(JSON);

  列出人员lt=新

  列出人员()

  {

  新人(){Name=Ace ,年龄=22,LastLoginTime=DateTime .现在},

  新人(){Name=Getes ,年龄=55,LastLoginTime=DateTime .现在}

  };

  字符串jsonstring=

  JsonHelper .JsonSerializer列表人员(lt);

  回应. write(JSON字符串);

  字典字符串,字符串dy=新字典字符串,字符串

  dy .Add(Name , Ace );

  dy .添加(年龄, 22 );

  字符串json1=

  JsonHelper .JsonSerializer字典字符串,字符串(dy);

  回应. write(JSON 1);

  }

  用爪哇岛描述语言处理

  函数更改日期格式(jsondate)

  {

  JSON日期=JSON日期。替换(/Date(, ).替换()/,

  );

  if (jsondate.indexOf() 0)

  {

  jsondate=jsondate.substring(0,jsondate。())的索引;

  }

  else if (jsondate.indexOf(-)

  {

  jsondate=jsondate.substring(0,jsondate。(-)的索引;

  }

  var日期=新日期(parseInt(jsondate,10));

  var month=date.getMonth() 1 10?0

  (日期。getmonth()1):日期。getmonth()

  1;

  var当前日期=日期。getdate()10?0

  约会。getdate():日期。getdate();

  return date.getFullYear() -

  月份-

  当前日期;

  }

json教学,json使用方法