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 反序列化 其他的就比较简单了 网上搜搜一大堆 不累述了

原文地址:https://www.cnblogs.com/mrliuc/p/1946039.html