Json详解

   之前并没有系统地学习Json,以至于做项目中一直想着在Controller中写个Json串传给前台用,结果大家可能想到了,都是错误。其实想想我为什么会出现这样的错误,归根结底还是不了解Json是什么。JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。


1.Json的两种结构

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

{
    key1:value1,
    key2:value2,
    ...
}
   其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组。

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

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


2.Json字符串和Json对象

   json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
   json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };


3.以一个实例说明Json在JS中的应用

先给大家展示一段代码:

var tree = {

    /**
    * 所有的初始化的操作
    */
    pFunction: {
        zTree: '',
        setting:
        {
            callback: {
                onClick: zTreeOnClick
            },
            check: {
                enable: false,
                chkboxType: { "Y": "", "N": "" }
            },
            data:
            {
                key:
                {
                    name: "ResourceName"
                },
                simpleData: 
                {
                    enable: true,
                    idKey:"ResourceId",
                    pIdKey: "PId",
                    rootPId:"0"
                }
            }

        },

       
        //加载资源
        loadTree: function () {
            $.post("/ResourceFront/getAllResource", null, function (resourceInfo) {
                $.fn.zTree.init($("#tree"), tree.pFunction.setting, resourceInfo);
            });
        }

    }
};
    这整段代码就是一个Json对象tree,在tree对象中又包含一个key值:pFunction。pFunction这个key值对应的又是一个Json对象(这说明JSON对象中可以在嵌套JSON对象)。而。这个JSON对象又包含三个key值:zTree、setting和loadTree。zTree对应的是一个空串。setting对应的又是一个JSON对象,这个JSON对象又包含三个KeyValue值,loadTree这个key值对应的是一个Function对象。我想通过读这一段代码,可以很好地理解JSON了。记着半年前,看到这段代码还很苦恼,不知道这到底是什么东西。

4.在.NET中如何使用Json

   我们前后台进行交互时通过JSON串,后台的对象通过序列化转为JSON串传给前台,前台可以很方便地通过Js处理。比如以上面的代码为例读取loadTree对应的函数:tree.pFunction.loadTree();而前台传给后台的JSON串需要反序列为对象给后台使用。Newtonsoft.Json.JsonConvert类是非微软提供的一个JSON序列化和反序列的开源免费的类库(下载网址是:http://www.codeplex.com/json/),它提供了更灵活的序列化和反序列化控制。

publicstaticvoid JsonConvertDemo()
{
User user =new User { UserId =1, UserName ="李刚", CreateDate = DateTime.Now.AddYears(-30), Birthday = DateTime.Now.AddYears(-50), Priority = Priority.BelowNormal, Salary =5000 };
//JsonConvert类在Newtonsoft.Json.Net35.dll中,注意到http://www.codeplex.com/json/下载这个dll并添加这个引用
//JSON序列化
string result = JsonConvert.SerializeObject(user);
Console.WriteLine("使用JsonConvert序列化后的结果:{0},长度:{1}", result, result.Length);
//JSON反序列化
user = JsonConvert.DeserializeObject<User>(result);
Console.WriteLine("使用JsonConvert反序列化后的结果:UserId:{0},UserName: {1},CreateDate:{2},Priority:{3}", user.UserId, user.UserName, user.CreateDate, user.Priority);
}

   总结:JSON是JavaScript对象的一种表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。在项目中应用很广泛,是一项基本功,需要牢固掌握。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值