好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

浅谈C#.NET、JavaScript和JSON

写在前面

全部手打,没有多余的话,全部干货,基本上用到的我就记录了。

一、什么是json

json:javascript object notation,是一种轻量级的数据交互格式,主要用于数据传输。

二、json语法规则

 1、数据由键值对(映射)关系表示,使用 [:] 表示;

   例子:"name" : "赵大"。

 2、数据之间使用 [,] 分隔;

  例子:"name" : "赵大", "age" : "27"。

 3、数据映射的集合(对象)用 [{}] 包含;

  例子:一条学生数据对象:

  {"id" : "1", "name" : "赵大", "age" : "27", "gender" : "男"}

 4、并列数据的集合(对象的数组形式)用 [[]]包含,之间用 [,]分隔;

  例子:两条学生数据对象数组:

  [{"id" : "1", "name" : "赵大", "age" : "27", "gender" : "男"}, {"id" : "2", "name" : "钱二", "age" : "27", "gender" : "男"}]

三、json数据中的数据类型

数字   (整数或者浮点数) 字符串(在双引号中) 布尔值(true或false) 数组   (在[]中) 对象   (在{}中) null

四、json格式数据的数据表现

  通过json的语法规则可知,json数据一般有以下几种表现形式:

  1、单对象;

  2、对象集合(数组);

  3、1和2的组合:嵌套;

  4、纯字符串;

五、c#.net与json

  在c#.net环境下有对json序列化和反序列化支持的组件,也有第三方的组件,

  .net支持的有 javascriptserializer 类和 datacontractjsonserializer 类,

  第三方支持的有 json.net(newtonsoft.json)等。

  1、使用 javascriptserializer 类对json数据序列化和反序列化:

  首先得在引用中引用:system.web.extentions.dll

  类文件中做引用:using system.web.script.serialization;  

?

dictionary< string , string > stu = new dictionary< string , string >();

       stu.add( "id" , "1" );

       stu.add( "name" , "赵大" );

       stu.add( "age" , "27" );

       stu.add( "gender" , "男" );

       javascriptserializer js = new javascriptserializer();

       string stujson = js.serialize(stu);

       console.writeline( "使用 javascriptserializer 类序列化得到json格式数据:" );

       console.writeline(stujson);

 

示例:json单对象序列化

?

string dejson = stujson;

       dictionary< string , string > destu = js.deserialize<dictionary< string , string >>(dejson);

       console.writeline( "使用 javascriptserializer 类将json格式数据反序列化指定类:" );

       foreach ( string s in stu.keys)

       {

         console.writeline(s.tostring() + "=" + stu[s].tostring());

       }

       console.readline();

 

示例:json单对象反序列化

运行结果:

 

  2、使用第三方支持的 json.net(newtonsoft.json)类库对json数据序列化和反序列化:

  参考地址:

六、javascript与json

  1、javascript中自定义json字符串并解析;

  例子:学生赵大信息:

?

function myjson() {

       var stu = { "id" : "1" , "name" : "赵大" , "age" : "27" , "gender" : "男" , "school" : { "class" : "03" , "teacher" : "赵大的老师" } };

       alert( "id=" + stu.id + ", " + "name=" + stu.name + ", " + "age=" + stu.age + ", " + "gender=" + stu.gender);

     }

效果图:

 

 可以看到自定义的json字符串后,在使用stu这个对象可以自动识别为成员变量了。

   2、从后台传入的json数据通过解析后转化为json数据对象:

  例子:学生赵大信息(这里的ajax请求用jquery处理了):

?

$(document).ready(function () {

       $.ajax({

         url: "ajaxweb.ashx" ,

         type: "get" ,

         datatype: "json" ,

         success: function (data) {

           var stu = json.parse(data);

           alert( "id=" + stu.id + ", " + "name=" + stu.name + ", " + "age=" + stu.age + ", " + "gender=" + stu.gender + ", " + "teacher=" + stu.school[ "teacher" ]);

         },

         error: function (e) {

           alert(e.tostring());

         }

       })

     })

 

从后台获取json字符串后转化为json对象

?

public void processrequest(httpcontext context)

     {

       context.response.write(myjson2());

     }

     private string myjson2()

     {

       string json = " {\"id\": \"1\", \"name\": \"赵大\", \"age\": \"27\", \"gender\": \"男\", \"school\": { \"class\": \"03\", \"teacher\": \"赵大的老师\" }}" ;

       javascriptserializer js = new javascriptserializer();

       json = js.serialize(json);

       return json;

     }

 

后台处理文件代码

效果图:

 

chrome下f12开发人员工具调试效果图:

七、参考资料

百度百科

百度搜索

慕课网(http://HdhCmsTestimooc测试数据/)

JSON在线校验与排版美化( https://tool.zzvips测试数据 )

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!

原文链接:http://HdhCmsTestcnblogs测试数据/zhaosx/p/6364681.html

dy("nrwz");

查看更多关于浅谈C#.NET、JavaScript和JSON的详细内容...

  阅读:54次