市委组织部考核项目——我对JSON的理解与应用

        JSON的全称是JavaScript Object Notation”,意思是JavaScript对象表示法,是一种基于文本,独立于语言的轻量级数据交换格式;我们也知道XML也是一种数据交换格式,而且xml的使用非常广泛,几乎所有的编程语言都对xml有很好的支持,那这次为什么我们选择了JSON呢?


       从我自身来说,学习了JavaScript之后第一次做项目,手生,JSON相对于xml来说无论是文档的构建还是解析都是比较容易的,它的结构类似于对象,解析的代码也很简单,容易上手;从整个项目来说,这个项目不大,但时间给的少,我们采用敏捷开发的方式进行,其中也使用到了EASY-UI框架,用的相对多的就是datagrid了,我们使用json转换的数据可以很方便的与这个框架合作,无论是显示数据还是保存数据都是很方便的,代码量很少,也很简单。


       以上是我做项目之前对json的简单理解,事物都有两面性,json也跑不了,下面我用比较官方一点的语言描述一下JSON的优缺点


优点:

    1. 使用JSON的数据分隔符,它们简化了数据访问。使用这些数据分隔符时, JavaScript引擎对数据结构(如字   符串、数组、对象)的内部表示恰好与这些符号相同。
    2. JSON的另一个优点是它的非冗长性。在XML中,打开和关闭标记是必需的,这样才能满足标记的依从性;而   在JSON中,所有这些要求只需通过一个简单的括号即可满足。在包含有数以百计字段的数据交换中,传统的XML 标记将会延长数据交换时间
    3. JSON受到了擅长不同编程语言的开发人员的青睐。这是因为无论在Haskell中或 Lisp中,还是在更为主流的C#和Java中,开发都可以方便地生成JSON。

不足:
   1.和许多好东西都具有两面性一样,JSON的非冗长性也不例外,为此JSON丢失了XML具有的一些特性。命名空间允许不同上下文中的相同的信息段彼此混合,然而,显然在JSON中已经找不到了命名空间。JSON与XML的另一个差别是属性的差异,由于JSON采用冒号赋值,这将导致当XML转化为 JSON时,在标识符(XML CDATA)与实际属性值之间很难区分谁应该被当作文本考虑。 
   2.JSON片段的创建和验证过程比一般的XML稍显复杂。从这一点来看,XML在开发工具方面领先于JSON。


大概了解了JSON的特点,下面我们从例子中体会它是否给我们带来了方便


JSON的两种结构——对象和数组


1.对象结构


对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

{
    key1:value1,
    key2:value2,
    ...
}


其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组

2.数组结构


数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

[
    {
        key1:value1,
               key2:value2 
      },
           {
          key3:value3,
                key4:value4   
             }
]

认识JSON字符串和JSON对象

       

       在js 中使用双引号或单引号的字符都是字符串,而json字符串其实就是符合json格式的字符串,这样一说你是不是就知道json字符串的格式了呢?无非是在json格式外加上单引号或双引号。例如:var StrJson="{ test: "inquireTargetName", checkedYearValue: "2014"}";那JSON对象长什么样呢?双引号包括的就是JSON对象


JSON在项目中的使用方法


       虽然上边提到了xml与json的区别,但是他们传输数据的过程基本一致,如下:

市委组织部考核项目——我对JSON的理解与应用


在JS中使用JSON


JS中使用“.”操作符和key的方式读写JSON数据

1.定义JSON对象

	
	var obj = {
            TargetName: "基层组织建设",
            UnitName:“市委组织部”,
            City: [ //数组结也可以嵌套在json对象中使用
                        {
                            id: 1,
                            CityName: "安次区",
	
                        },
                        {
                            id: 2,
                            CityName: "广阳区"
                        }
                   ],
            ObjInquire: { //对象结构当然也可以嵌套在json对象中使用
                id: 1,
                test: "InquireCityName"    
            }
        };

2.从JSON中读数据

	function test() {
	
			alert(obj.TargetName);    
			alert(obj["TargetName"]);//以上两种情况一致
	
	                alert(obj.City[0].CityName);    
			alert(obj.City[0]["CityName"]);//以上两种情况一致
			alert(obj.ObjInquire.test); 
			alert(obj.ObjInquire["test"]);//以上两种情况一致
        }

3.往JSON中写数据

	function Add() { 
                    obj.Year= 2014 
		    obj["Year"]=2014
        }

4.修改JSON中的数据

        obj.Name="市委组织部考核";
        obj["Name"]="市委组织部考核";

5.删除JSON中的数据

       delete obj.Name;
       delete obj["Name"];

在一般处理程序中使用JSON


JSON序列化

         使用序列化将从数据库中查询到的数据转换为JSON格式字符串传回客户端,这里用到的是JsonConvert对象的SerializeObject方法。其语法格式为:JsonConvert.SerializeObject(object)。例如:

	//json序列化
        String strData = JsonConvert.SerializeObject(arr.ToArray());
        //将数据返回到页面
        context.Response.Write(strData );


         这种序列化的方式需要下载 Newtonsoft.Json.dll,下载地址为:点击打开链接,还需要添加using Newtonsoft.Json;using Newtonsoft.Json.Converters;


         JSON序列化的方式还有很多,还可以通过自己写的方法转换格式,这里就不一一介绍了。


       总结:刚开始了解json的时候是在王兴奎老师讲的ajax中,里边就稍稍提了一下,当时我就百度百科了一下,也没做更多的了解,后来做项目时才发现原来JSON在我们的项目中是必需品,这时才塌下心来查资料,做更多的了解,开始时觉得挺神秘的,项目做的差不多了也发现这个确实挺好用的,前提的前提就是有现成的JSON格式,呵呵,写JSON还没有研究过,用的是小崔师哥给写好的,我想这个有一天我也需要会吧!



市委组织部考核项目——我对JSON的理解与应用

上一篇:HTML5实战与剖析之字符集属性(charset和defaultCharset)


下一篇:ASP.NET 显示项目之外的图片