zoukankan      html  css  js  c++  java
  • js 对象 与 json操作

    model

     public class ProjectActivityType
        {
            public ProjectActivityType()
            { }
            #region Model
            private string _projectid;
            private int _activitytypeid;
            private int _persons;
            private int _maleleast;
            private int _malemost;
            private int _ladyleast;
            private int _ladymost;
            /// <summary>
            /// 
            /// </summary>
            public string ProjectID
            {
                set { _projectid = value; }
                get { return _projectid; }
            }
            /// <summary>
            /// 活动类型ID
            /// </summary>
            public int ActivityTypeID
            {
                set { _activitytypeid = value; }
                get { return _activitytypeid; }
            }
            /// <summary>
            /// 标准人数(按最小人数比对)
            /// </summary>
            public int Persons
            {
                set { _persons = value; }
                get { return _persons; }
            }
            /// <summary>
            /// 男最少人数
            /// </summary>
            public int MaleLeast
            {
                set { _maleleast = value; }
                get { return _maleleast; }
            }
            /// <summary>
            /// 男最多人数
            /// </summary>
            public int MaleMost
            {
                set { _malemost = value; }
                get { return _malemost; }
            }
            /// <summary>
            /// 女最小人数
            /// </summary>
            public int LadyLeast
            {
                set { _ladyleast = value; }
                get { return _ladyleast; }
            }
            /// <summary>
            /// 女最多人数
            /// </summary>
            public int LadyMost
            {
                set { _ladymost = value; }
                get { return _ladymost; }
            }
            #endregion Model
        }
    

    JS类

    function ProjectActivityType(ProjectID, ActivityTypeID, Persons, MaleLeast, MaleMost, FemaleLeast, FemaleMost, ActivityTypeName) {
        this.ActivityTypeName = ActivityTypeName;
        this._projectid = ProjectID;
        this._persons = Persons;
        this._maleleast = MaleLeast;
        this._malemost = MaleMost;
        this._ladyleast = FemaleLeast;
        this._ladymost = FemaleMost;
        this._activitytypeid = ActivityTypeID;
    }
    
    js类与model类里的属性相对应  js中可以多出属性但不可以少属性 多出属性不影响序列化

    js 对象 new

    var ProjectActivityTypeObjArray = new Array();
    ProjectActivityTypeObjArray[ProjectActivityTypeObjArray.length]=new ProjectActivityType("", ActivityTypeID, Persons, MaleLeast, MaleMost, FemaleLeast, FemaleMost, ActivityTypeName);
    由于我要多个对象 这里我用了个数组来存储这些对象

    js对象转json

    /**js对象序列化的方法**/
    function ObjToJSON(o) {
        if (o == null)
            return "null";
    
        switch (o.constructor) {
            case String:
                var s = o; // .encodeURI();
                if (s.indexOf("}") < 0) s = '"' + s.replace(/(["\\])/g, '\\$1') + '"';
                s = s.replace(/\n/g, "\\n");
                s = s.replace(/\r/g, "\\r");
                return s;
            case Array:
                var v = [];
                for (var i = 0; i < o.length; i++)
                    v.push(ObjToJSON(o[i]));
                if (v.length <= 0) return "\"\"";
                return "[" + v.join(",") + "]";
            case Number:
                return isFinite(o) ? o.toString() : ObjToJSON(null);
            case Boolean:
                return o.toString();
            case Date:
                var d = new Object();
                d.__type = "System.DateTime";
                d.Year = o.getUTCFullYear();
                d.Month = o.getUTCMonth() + 1;
                d.Day = o.getUTCDate();
                d.Hour = o.getUTCHours();
                d.Minute = o.getUTCMinutes();
                d.Second = o.getUTCSeconds();
                d.Millisecond = o.getUTCMilliseconds();
                d.TimezoneOffset = o.getTimezoneOffset();
                return ObjToJSON(d);
            default:
                if (o["toJSON"] != null && typeof o["toJSON"] == "function")
                    return o.toJSON();
                if (typeof o == "object") {
                    var v = [];
                    for (attr in o) {
                        if (typeof o[attr] != "function")
                            v.push('"' + attr + '": ' + ObjToJSON(o[attr]));
                    }
    
                    if (v.length > 0)
                        return "{" + v.join(",") + "}";
                    else
                        return "{}";
                }
                //   alert(o.toString());
                return o.toString();
        }
    };
    
    这段代码是从网上找的  然后稍作改进  可以序列化数组 和 单个对象

     后台c# json 转对象

    //转换List
     public static Object Json2Obj(String json,Type t)
            {
                try
                {
                    System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t);
                    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                    {
                       
                        return  serializer.ReadObject(ms);
                    }
                }
                catch
                {
                    return null;
                }
            }
    //转换单个对象
            public static T Json2Obj<T>(string json) 
            {
                T obj = Activator.CreateInstance<T>();
                using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))
                {
                    System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
                    return (T)serializer.ReadObject(ms);
                }
            }
    

    c#方法调用

    //list 
    String ProjectActivityTypeModelStr = Framework.RequestHelper.GetFormString("ProjectActivityTypeModel");
                List<Model.ProjectActivityType> patModel = Framework.Json.JsonConvert.Json2Obj(ProjectActivityTypeModelStr, typeof(List<Model.ProjectActivityType>)) as List<Model.ProjectActivityType>;
    
    //这是单个对象方法的调用
     Model.ProjectBase pbModel = Framework.Json.JsonConvert.Json2Obj<Model.ProjectBase>(ProjectBaseModelStr);
    

    其中遇到的问题

    日期格式一直是json的一块痛啊

    date 转json

    function GetJsonDateTime(d) {
        if (d == "NaN")
            d = new Date(1970, 0, 1, 0, 0, 0);
        return "\/Date(" + d.valueOf() + ")\/";
    }
    

    这篇文章主要介绍的json 反序列化 其他的就比较简单了 网上搜搜一大堆 不累述了

  • 相关阅读:
    漫游Kafka介绍章节简介
    poj 2309 BST 使用树阵lowbit
    华为-on练习--小写字符数的统计显示
    OpenMp高速分拣
    eclipse 于 Tomcat于 热部署 project
    2015第49周二
    2015第49周一
    2015第48周六
    2015第48周五
    2015第48周四
  • 原文地址:https://www.cnblogs.com/mrliuc/p/1946039.html
Copyright © 2011-2022 走看看