• Json——js和C#对Json的操作


       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 }); };
  • 相关阅读:
    vue-修改vue项目运行端口号
    任正非521央视采访全文
    是施压还是真的决裂?
    贸易战风波继续
    华为对封杀的态度和格局
    美国封锁对华为的影响
    布鲁克斯法则 (Brooks's Law)
    2019第20周日
    如何让自己走的更远
    如何应对中年危机
  • 原文地址:https://www.cnblogs.com/landeanfen/p/4651412.html
Copyright © 2020-2023  润新知