zoukankan      html  css  js  c++  java
  • C# Newtonsoft.Json.dll json数据格式上传下载解析

    前提需要导入Newtonsoft.Json.dll

    1.创建实体输入json参数对象

     [JsonObject(MemberSerialization.OptOut)]
        class GateSignInputInfo
        {
            /// <summary>
            /// 考场代号
            /// </summary>
            public string kcdh { get; set; } = string.Empty;
    
            /// <summary>
            /// 查询当前时间后数据
            /// </summary>
            public string gxsj { get; set; } = string.Empty;
        }

    2.创建实体Json返回参数对象

     [JsonObject(MemberSerialization.OptOut)]
        class ResultInfo
        {
            /// <summary>
            /// 返回码
            /// 0失败1成功
            /// </summary>
            public int errorcode { get; set; } = 0;
    
            /// <summary>
            /// 提示信息
            /// </summary>
            public string message { get; set; }
    
            /// <summary>
            /// 数据信息
            /// </summary>
            public object data { get; set; }
        }

    3.创建json返回对象内的数据

     [JsonObject(MemberSerialization.OptOut)]
        class GateSignOutputInfo
        {
            /// <summary>
            /// 签到序号
            /// </summary>
            public string qdxh { get; set; }
            /// <summary>
            /// 姓名
            /// </summary>
            public string xm { get; set; }
            /// <summary>
            /// 身份证明号码
            /// </summary>
            public string sfzmhm { get; set; }
            /// <summary>
            /// 签到时间
            /// </summary>
            public string qdsj { get; set; }
        }

    4.将Json数据序列化

              // 生成JSON数据

                GateSignInputInfo inputInfo = new GateSignInputInfo
                {
                  kcdh = this.Kcdh
                };

                        string json = JsonConvert.SerializeObject(inputInfo);

    5.构建Json请求,传送数据

      #region[构建请求,获取数据]
        

          /// <summary>
          /// 根据url地址传递json数据
          /// </summary>
          /// <param name="url">目标地址</param>
          /// <param name="json">json数据</param>
          /// <param name="output">返回json数据</param>
          /// <returns>成功响应为true</returns>

            private bool UploadResult(string url, string json, out string output)
            {
                try
                {
                    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                    request.Method = "POST";
                    request.ContentType = "application/json";
    
                    using (Stream requestStream = request.GetRequestStream())
                    {
                        using (StreamWriter sw = new StreamWriter(requestStream, Encoding.GetEncoding("GBK")))
                        //using (StreamWriter sw = new StreamWriter(requestStream))
                        {
                            sw.Write(json);
                        }
                    }
    
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (StreamReader sr = new StreamReader(responseStream))
                        {
                            output = sr.ReadToEnd();
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"访问失败:{url} 
    {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    output = ex.Message;
                    return false;
                }
    
                return true;
            }
            #endregion

    6.反序列Json数据,解析数据

                 if (UploadResult(this.RequestByKS, json, out string output))
                        {
                            ResultInfo resultInfo = JsonConvert.DeserializeObject<ResultInfo>(output);
                            if (resultInfo.errorcode == 0)
                            {
                                labelHelp.Text = $"{resultInfo.message}";
                                return;
                            }
                            else
                            {
                                List<GateSignOutputInfo> outputInfos = JsonConvert.DeserializeObject<List<GateSignOutputInfo>>(resultInfo.data.ToString());
                                GateSignOutputInfo info = outputInfos.Find(x => x.sfzmhm == textPersonalCard.Text);
                                if(info == null)
                                {
                                    labelHelp.Text = $"尚未通过门禁,无法录入";
                                    return;
                                }
                            }
                        }

    本文来自博客园,作者:云辰,转载请注明原文链接:https://www.cnblogs.com/yunchen/p/14927618.html

  • 相关阅读:
    JavaScript那些事儿-不被知晓的预解释
    史上最难PHPer笔试题,40分就能月薪过万!附答案
    composer命令卡慢,使用国内源
    Github 上的 iOS 开源项目
    CSS3新属性:在网站中使用访客电脑里没有安装的字体
    Python批量重命名文件
    Python登录TP-Link路由器换ip脚本
    source 批量导入SQL文件
    代码
    excel字符拼接
  • 原文地址:https://www.cnblogs.com/yunchen/p/14927618.html
Copyright © 2011-2022 走看看