JS和C#對Json的操做

   JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,採用徹底獨立於語言的文本格式。博主記得幾年前在華爲外包項目中有一個和Android應用交互的需求,Android調用C#的Webservice的接口,就是經過Json這種格式來傳遞數據的。就是由於這種徹底獨立於語言的數據格式,因此在系統的先後臺被普遍使用。本篇用來記錄下前端JS以及後端C#裏面JSON的一些經常使用的操做方法。筆記筆記,好記性不如多筆記~~html

 

JS前端JSON操做: 前端

1、Json數據轉字符串:ajax

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

方法一:json

var oString2 = JSON.stringify(myList);後端

結果async

這個方法是js中JSON對象內置的。能夠直接使用。post

方法二:this

var oString1 = myList.toJSONString();url

這個方法須要json.js的支持。直接使用會報異常。spa

 

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 }); };
複製代碼

 

出處:http://www.cnblogs.com/landeanfen/p/4651412.html

相關文章
相關標籤/搜索