C#编程之JSON序列化与反序列化

来源:互联网 发布:开票接口软件使用 编辑:程序博客网 时间:2024/05/22 10:11

1、在C#管理NuGet程序包中添加Json.NET

2、C#将对象序列化成JSON字符串

模型类1

/// <summary>    /// JSON字符串模型.是否出错    /// </summary>    public class ErrorModel    {        #region  属性        /// <summary>        /// 是否出错        /// </summary>        public int Error { set; get; }        #endregion        #region  构造函数                /// <summary>        /// 禁止使用空构造函数        /// </summary>        private ErrorModel() { }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="error">错误标识,0表示没有错误,1表示有错误</param>        public ErrorModel(int error)        {            this.Error = error;        }        #endregion    }

模型类2

 /// <summary>    /// JSON字符串模型.返回信息    /// </summary>    public class MsgModel    {        #region  属性        /// <summary>        /// 返回信息        /// </summary>        public string Msg { set; get; }        #endregion        #region 构造函数        /// <summary>        /// 禁止使用空构造函数        /// </summary>        private MsgModel() { }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="msg">返回信息,没有错误信息Msg=“Success“,        /// 否则,Msg中包含错误信息。</param>        public MsgModel(string msg)        {            this.Msg = msg;        }        #endregion     }

模型类3

 /// <summary>    /// JSON字符串模型.数据    /// </summary>    public class DataModel    {        #region 属性        /// <summary>        /// 返回数据        /// </summary>        public IList<PN_GreDegreeModel> Data { set; get; }        #endregion        #region  构造函数        /// <summary>        /// 禁止使用空构造函数        /// </summary>        private DataModel() { }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="data">返回数据</param>        public DataModel(IList<PN_GreDegreeModel> data)        {            this.Data = data;        }        #endregion     }

生成JSON字符串

 /// <summary>        /// 生成JSON字符串        /// </summary>        /// <param name="errorModel">错误编码,0查询成功,1查询失败</param>        /// <param name="msgModel">返回信息,没有错误信息Msg=“Success“,        /// 否则,Msg中包含错误信息。</param>        /// <param name="list">返回数据</param>        /// <returns></returns>        public string createJSON(int error, string msg, IList<PN_GreDegreeModel> list)        {            //定义变量            string data = null;            ArrayList aryList = new ArrayList();            //生成对象            ErrorModel errorModel = new ErrorModel(error);            MsgModel msgModel = new MsgModel(msg);            DataModel dataModel = new DataModel(list);            //装箱            aryList.Add(errorModel);            aryList.Add(msgModel);            aryList.Add(list);            //序列化            data = JsonConvert.SerializeObject(aryList);            return data;        }

3、C#将JSON字符串反序列化成对象

无数组:

            //将json字符串转换为对象            JObject jObject = JObject.Parse(s);

有数组:

            //将json字符串转换为对象            JObject jObject = (JObject)JsonConvert.Parse(getString);            JArray jar = JArray.Parse(jObject["RTDataSets"].ToString());            //对收到的字符串进行解析            for (int j = 0; j <jar.Count; j++)                {                    JObject job = JObject.Parse(jar[j].ToString());                    tampAdds = (string)job["kksCode"];                    JArray jarr = JArray.Parse(job["RTDataValues"].ToString());                    JObject jobs = JObject.Parse(jarr[0].ToString());                    value = (double)(jobs["Value"]);                    //_dict.Add(add,value);                }

JObject反序列化的是对象{},JArray反序列化的是数组[]。

附加链接:Json.NET Document


0 0
原创粉丝点击