json学习总结

关于JSON,一种字符串,JS中接触过一点,但没怎么用过,这次在做教务系统时,在U层传值时,要经常用到json,那么,它跟普通的string有什么区别呢?

JSON:轻量级的数据交换格式,主要用于与服务器进行交换,具有很高的效率,例如MongoDB中就是利用Json来进行存储数据的。总之,与XML类似,在跨平台数据传输上具有很强的优势!

以上是对JSON的一个简单的介绍,这里主要总结一下JSON是如何进行传值的!

一、格式:字符串的形式,有引号,本着JS中一切皆对象的原则,任何对象都可进行序列化,转换成JSON格式。

二、如何进行转换

1、常用样式

‘{"name":wyy,"age":22}‘ //对象

‘[2,3,"wyy"]‘ //数组

2、解析

JSON对象提供了两个方法:eval()和stringify

三、传值

在平常的应用中,我们会经常利用JSON格式进行前后台的数据交换,单个的数据交换,利用Ajax是很容易实现的,利用键值对的形式即可。在这次使用的easyui中,也是JSON格式,提交表单时,直接用的FormCollection的方式,通过识别name进行传值,datagrid中则以JSON来接收数据源。

在这里总结一下从View中传递一个对象到Controller中如何进行接收,从Controller中传递一个实体,在JS中又如何进行取值的问题,当然,其实,在前一篇博客MVC传值中的哪几种传值方式已经很好的解决了这些问题,但是作为单独的传递实体问题,在这里还是要总结一下。

1、JS——Controller

JS:

 var p = {
        name: "xiaohong",
        age: "22",
        sex:"女"
    }
function TestObj() {
        
        $.ajax({
            type: "POST",
            url: "/Person/TestObj",
            data: {'w': JSON.stringify(p)},//将JS对象进行序列化
         success: function () {
                alert("成功了");         
            }
        })
C:

using Newtonsoft.Json; 
public Person TestObj()
        {
            //获取参数

            string testData = Request.Form["w"];

            //进行反序列化

            Person p = (Person)JsonConvert.DeserializeObject(testData, typeof(Person));
            return p;
        }

public class Person
    {

        public string name { get; set; }
        public string sex { get; set; }
        public int age { get; set; }
//        public override string ToString()
//        {
//            string s = string.Format(@"
//                name:{0}  
//                age:{1}  
//                sex:{2}", name,age,sex);
//            return s;
//        }  
    }

在这里想要把从JS传过来的数据转换成定义的实体对象,需要我们引入微软提供的JSON转换工具,官方网站:http://json.codeplex.com/

在easyui的datagrid表格编辑时,运用的也是这个原理。

2、C——>JS

public string QueryInfo()
        { 
            Person person=new Person (){
                name="wyy",
                sex="女",
                age=22

            };
            return JsonConvert.SerializeObject(person);
        }
JS:

 function TestObj() {
        
        $.ajax({
            type: "POST",
            url: "/Person/QueryInfo",
            success: function (data) {
                alert(data);
                alert('(' + data + ')')
                var objp=eval('(' + data + ')');
                alert(objp.name);
                
            }
        })
    }

这里运用的也是JSON转换工具,首先将定义的实体对象进行序列化,然后以JSON格式传到JS,然后再利用eval来进行转换成JS对象的格式,这样便可以取到具体的某个对象的属性值了。


小结:UI与后台交互中,传值是核心。原理要清楚,才能挖掘的更深!


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。