• C# 处理 JSON 常用的帮助类


    C#请求接口的方法,具体代码:

    首先需要添加引用和第三方的组件,具体如下:

    引用命名空间:

    1 using System.IO;
    2 using Newtonsoft.Json.Linq;
    3 using System.Web.Script.Serialization; 

    常用到的两种请求方式的代码类,具体实现如下

     1         /// <summary>
     2         /// Post 带有参数请求Json的方法
     3         /// </summary>
     4         /// <param name="PARAMETER">请求的参数</param>
     5         /// <param name="POSTURL">请求的URL地址</param>
     6         /// <returns>返回json字符串</returns>
     7         public static JObject RequestJsonByUrlPost(string PARAMETER, string POSTURL)
     8         {
     9             JObject jo = new JObject();
    10             try
    11             {
    12                 UTF8Encoding encoding = new UTF8Encoding();
    13                 byte[] data = encoding.GetBytes(PARAMETER);
    14                 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(POSTURL);
    15                 myRequest.Method = "Post";
    16                 myRequest.ContentType = "application/x-www-form-urlencoded";
    17                 myRequest.ContentLength = data.Length;
    18                 Stream newStream = myRequest.GetRequestStream();
    19                 newStream.Write(data, 0, data.Length);
    20                 newStream.Close();
    21                 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
    22                 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
    23                 string sJson = reader.ReadToEnd();
    24                 jo = JObject.Parse(sJson);
    25             }
    26             catch (Exception ex)
    27             {
    28                 MessageUtil.ShowException("系统错误,请联系管理员!", ex);
    29             }
    30             return jo;
    31         }
    32         /// <summary>
    33         /// Get 请求的方法
    34         /// </summary>
    35         /// <param name="geturl">请求的URL地址</param>
    36         /// <returns>返回json字符串</returns>
    37         public static JObject RequestJsonByUrlGet(string geturl)
    38         {
    39             JObject jo = new JObject();
    40             try
    41             {
    42                 HttpWebRequest http = WebRequest.Create(geturl) as HttpWebRequest;
    43                 HttpWebResponse response = (HttpWebResponse)http.GetResponse();
    44                 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    45 
    46                 string sJson = reader.ReadToEnd();
    47                 http.Abort();
    48                 ArrayList ObjList = new ArrayList();
    49                 //将字符串转换成Json对象
    50                 jo = JObject.Parse(sJson);
    51             }
    52             catch (Exception ex)
    53             {
    54                 MessageUtil.ShowException("系统错误,请联系管理员!", ex);
    55             }
    56             return jo;
    57         }

    处理接口返回的 JSON 数据转换常用的帮助类,具体代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace HackMoney
     7 {
     8     public class JsonHelper
     9     {
    10 
    11         /// <summary>
    12         /// 转换对象为JSON格式数据
    13         /// </summary>
    14         /// <typeparam name="T"></typeparam>
    15         /// <param name="obj">对象</param>
    16         /// <returns>字符格式的JSON数据</returns>
    17         public static string GetJSON<T>(object obj) {
    18             string result = String.Empty;
    19             try {
    20                 System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
    22                 using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) {
    23                     serializer.WriteObject(ms, obj);
    24                     result = System.Text.Encoding.UTF8.GetString(ms.ToArray());
    25                 }
    26             } catch (Exception ex) {
    27                 throw ex;
    28             }
    29             return result;
    30         }
    31         /// <summary>
    32         /// 转换List<T>的数据为JSON格式
    33         /// </summary>
    34         /// <typeparam name="T"></typeparam>
    35         /// <param name="vals">列表值</param>
    36         /// <returns>JSON格式数据</returns>
    37         public static string JSON<T>(List<T> vals) {
    38             System.Text.StringBuilder st = new System.Text.StringBuilder();
    39             try {
    40                 System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
    41 
    42                 foreach (T city in vals) {
    43                     using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) {
    44                         s.WriteObject(ms, city);
    45                         st.Append(System.Text.Encoding.UTF8.GetString(ms.ToArray()));
    46                     }
    47                 }
    48             } catch (Exception ex) {
    49                 throw ex;
    50             }
    51 
    52             return st.ToString();
    53         }
    54         /// <summary>
    55         /// JSON格式字符转换为T类型的对象
    56         /// </summary>
    57         /// <typeparam name="T"></typeparam>
    58         /// <param name="jsonStr"></param>
    59         /// <returns></returns>
    60         public static T ParseFormByJson<T>(string jsonStr) {
    61             T obj = Activator.CreateInstance<T>();
    62             using (System.IO.MemoryStream ms =
    63             new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr))) {
    64                 System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
    65                 new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
    66                 return (T)serializer.ReadObject(ms);
    67             }
    68         }
    69 
    70 
    71 
    72 
    73         public static string JSON1<SendData>(List<SendData> vals) {
    74             System.Text.StringBuilder st = new System.Text.StringBuilder();
    75             try {
    76                 System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(SendData));
    77 
    78                 foreach (SendData city in vals) {
    79                     using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) {
    80                         s.WriteObject(ms, city);
    81                         st.Append(System.Text.Encoding.UTF8.GetString(ms.ToArray()));
    82                     }
    83                 }
    84             } catch (Exception ex) {
    85                 throw ex;
    86             }
    87 
    88             return st.ToString();
    89         }
    90 
    91     }
    92 }
  • 相关阅读:
    分布式锁
    zookeeper
    工作流笔记第四天_流程变量
    工作流笔记第三天_流程实例
    工作流笔记第二天_流程定义的CRUD
    工作流笔记第一天_简单介绍activiti
    groovy修改代码不用重启通过监听记录改变时间重新加载
    遇到的前端问题
    常用正则表达式大全
    Hibernate中Session.get()方法和load()方法的详细比较
  • 原文地址:https://www.cnblogs.com/felix-wang/p/6362546.html
Copyright © 2020-2023  润新知