后台生成JSON及前台解析

首先,添加两个DLL的引用,分别是:System.Runtime.Serialization.dll、System.ServiceModel.Web.dll。
然后写ToJson方法:
/// <summary>
        /// 格式化成Json字符串
        /// </summary>
        /// <param name="obj">需要格式化的对象</param>
        /// <returns>Json字符串</returns>
        public static string ToJson(object obj)
        {
            // 首先,当然是JSON序列化
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

            // 定义一个stream用来存发序列化之后的内容
            Stream stream = new MemoryStream();
            serializer.WriteObject(stream, obj);

            // 从头到尾将stream读取成一个字符串形式的数据,并且返回
            stream.Position = 0;
            StreamReader streamReader = new StreamReader(stream);
            return streamReader.ReadToEnd();
        }

然后写具体model:如果要对该类进行序列化,一定要在类前面添加上“[DataContract]”,在属性前面添加上“[DataMember]”,这样才能被“DataContractJsonSerializer”序列化成JSON。

        [DataContract]
        public class PHSClass
        {
            [DataMember]
            public string ProjectID { get; set; }
            [DataMember]
            public string ProjectName { get; set; }
            [DataMember]
            public string Recipient { get; set; }
            [DataMember]
            public string SplitDetails { get; set; }
        }


调用实例:
  //初始化时,用Json格式存放已分配任务
  List<PHSClass> list = new List<PHSClass>();
                ds = cp.get_ProjectHeadSplit_ByPID(AppID);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        PHSClass pc = new PHSClass();
                        string ProjectID = dr["ProjectID"].ToString();
                      
                        string ProjectName = dr["ProjectName"].ToString();
                        string Recipient = dr["Recipient"].ToString();
                      
                        string SplitDetails = dr["SplitDetails"].ToString();

                        pc.ProjectID = ProjectID;
                        pc.ProjectName = ProjectName;
                        pc.Recipient = Recipient;
                        pc.SplitDetails = SplitDetails;

                        list.Add(pc);
                    }

                    ValList = ToJson(list);
                }
                hidValList.Value = ValList;


前台解析:

$(document).ready(function() {
            var valList = document.getElementById("hidValList").value;

            if (valList != "") {
                var jsonArray = eval(valList); //json解析
                for (var i = 0; i < jsonArray.length; i++) {
                    funAddRows(jsonArray[i].ProjectID, jsonArray[i].ProjectName, jsonArray[i].SplitDetails, jsonArray[i].Recipient);
                }
            }
        });

 

 

前台json格式,后台解析方法

JavaScriptSerializer json = new JavaScriptSerializer();
List<CheckRecodrs> list = json.Deserialize<List<CheckRecodrs>>(strRecordValues);

 

posted @ 2013-05-20 23:43  Trilyn  阅读(543)  评论(0)    收藏  举报