zoukankan      html  css  js  c++  java
  • C#编程之JSON序列化与反序列化

    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


  • 相关阅读:
    类在编写过程中的一些注意事项
    SDUT 2893-B(DP || 记忆化搜索)
    Microsoft.AlphaImageLoader滤镜解说
    解决网页版权符号模糊不清
    oninput,onpropertychange,onchange的使用方法和差别
    VB.net数据库编程(03):一个SQLserver连接查询的简单样例
    使用WinSetupFromUSB来U盘安装windowsXP(不使用win PE系统)
    ActivityManager
    IP协议
    jni编译non-numeric second argument to `wordlist' function错误
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271197.html
Copyright © 2011-2022 走看看