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