Json——js和C#对Json的操做

   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用彻底独立于语言的文本格式。博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Android调用C#的Webservice的接口,就是经过Json这种格式来传递数据的。就是由于这种彻底独立于语言的数据格式,因此在系统的先后台被普遍使用。本篇用来记录下前端JS以及后端C#里面JSON的一些经常使用的操做方法。笔记笔记,好记性不如多笔记~~前端

 

JS前端JSON操做: ajax

1、Json数据转字符串:json

var myList = [
            { Name: "Jim", Age: 20 },
            { Name: "Kate", Age: 21 },
            { Name: "Lilei", Age: 18 },
            { Name: "John", Age: 14 },
            { Name: "LinTao", Age: 25 }
    ];

方法一:后端

var oString2 = JSON.stringify(myList);async

结果url

这个方法是js中JSON对象内置的。能够直接使用。spa

方法二:code

var oString1 = myList.toJSONString();对象

这个方法须要json.js的支持。直接使用会报异常。blog

 

2、string字符串转JSON对象:

方法一:

var oString2 = JSON.stringify(myList);

var oJson1 = eval(oString2);

eval()方法是内置的。可直接使用。

方法二:

var oJson2 = $.parseJSON(oString2);

须要jQuery的支持。

方法三:

var oJson3 = JSON.parse(oString2);

是js内置的,能够直接使用。

方法四:

var oJson4 = String.parseJSON(oString2);

须要引json.js文件。

 

综上所述:在js里面JSON变量操做不须要引用任何文件直接使用的方法有JSON.stringify(myList)、JSON.parse(oString2)、eval(oString2)。

 

C#后台JSON处理:

在C#里面,Json能够理解为一种匿名对象,每个键值对就能够理解为对应对象的属性和值。在后端Json这种格式通常用于对象的序列化:

     public void JsonTooo()
        {
            string jsonStr = "{\"name\":\"tom\",\"age\":11}";   //jsonStr 为json格式的字符串
            JavaScriptSerializer json = new JavaScriptSerializer();   //实例化一个可以序列化数据的类
            ToJson list = json.Deserialize<ToJson>(jsonStr);    //将json数据转化为对象类型并赋值给list
            string Name = list.name;      //Name的值为tom..  list可点出name
        }

那么确定就有一个对象和它对应。

     public class ToJson
        {
            public string name { get; set; }  //属性的名字,必须与json格式字符串中的"key"值同样。
            public string age  { get; set; }
        }

这种对应关系的转换序列化方式前面已经说了不少了。在此就很少说。

MVC里面更是很好的支持了后台程序对Json数据的支持。好比Controller里面JsonResult对象

     public JsonResult GetEditModel(string strType)
        {
            var lstRes = new List<DragElementProp>();
            List<PageProperty> lstRes = new List<PageProperty>();
            return Json(new { lstDataAttr = lstRes, PageAttr = lstPageAttrs }, JsonRequestBehavior.AllowGet);
        }

只须要DraElementProp和PageProperty这两个对象支持对象可序列化,就能够直接将对象传到前端:

  [DataContract]
    public class PageProperty
    {
        [DataMember]
        public string Id { get; set; }
        [DataMember]
        public string Width { get; set; }
        [DataMember]
        public string Height { get; set; }
        [DataMember]
    }

 

  

前端和后端通讯使用Ajax的时候大部分状况是经过Json数据进行数据交互的。这个时候须要指定datatype类型为json。

$.Gmzp.AjaxPost = function (strUrl, oParams, funSuccessCallback, funErrorCallback, funFinishCallback) {
        $.ajax({
            type: "POST",
            url: strUrl,
            data: oParams,
       async: false,//false为阻塞请求
       dataType: "json", success: funSuccessCallback, error: funErrorCallback, complete: funFinishCallback }); };
相关文章
相关标签/搜索