JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立於語言的文本格式。博主記得幾年前在華為外包項目中有一個和Android應用交互的需求,Android調用C#的Webservice的接口,就是通過Json這種格式來傳遞數據的。就是因為這種完全獨立於語言的數據格式,所以在系統的前后台被廣泛使用。本篇用來記錄下前端JS以及后端C#里面JSON的一些常用的操作方法。筆記筆記,好記性不如多筆記~~
JS前端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);
結果
這個方法是js中JSON對象內置的。可以直接使用。
方法二:
var oString1 = myList.toJSONString();
這個方法需要json.js的支持。直接使用會報異常。
二、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 }); };