json使用專用類
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web.Security;
using System.Windows.Forms;
namespace 希立儀器
{
class JSONCONVENT
{
//public String PRESSURE { get; set; }
//public String LEAKAGE { get; set; }
public class Student
{
public String PRESSURE { get; set; }
public String LEAKAGE { get; set; }
}
/// <summary>
///檢測站位的參數類
/// </summary>
public class Mycheckworkstation
{
public String appid { get; set; }
public int wid { get; set; }
public String timestamp { get; set; }
public String codestr { get; set; }
public String sign { get; set; }
}
/// <summary>
///檢測站位時返回的參數類
/// </summary>
public class Mycheckworkstationback
{
public String appid { get; set; }
public int wid { get; set; }
public String timestamp { get; set; }
public String codestr { get; set; }
public String sign { get; set; }
}
/// <summary>
///提交測試結果的類
/// </summary>
public class MySavetestresult
{
public String appid { get; set; }
public int wid { get; set; }
public String timestamp { get; set; }
public String codestr { get; set; }
public int trid { get; set; }
public String sign { get; set; }
List<Mytrel> trel = new List<Mytrel>();
public List<Mytrel> trels
{
get { return trel; }
set { trel = value; }
}
}//Class_end
/// <summary>
///trel的類
/// </summary>
public class Mytrel
{
public int tid { get; set; }
public String tval { get; set; }
public String trel { get; set; }
}//Class_end
/// <summary>
///使用測試結果獲取追溯碼的類
/// </summary>
public class MyGetcodestrwithtest
{
public String appid { get; set; }
public int wid { get; set; }
public String timestamp { get; set; }
public String tid { get; set; }
public String tval { get; set; }
public String sign { get; set; }
}//Class_end
/// <summary>
/// 歷史記錄的類,成員爲歷史記錄的所有項
/// </summary>
public class ResultMsg
{
public String PRESSURE { get; set; }//壓力值
public String LEAKAGE { get; set; } //泄漏值
}
/// <summary>
/// 將json字符串按照ASCII排序
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static string StortJson(string json)
{
var dic = JsonConvert.DeserializeObject<SortedDictionary<string, object>>(json);
SortedDictionary<string, object> keyValues = new SortedDictionary<string, object>(dic);
keyValues.OrderBy(m => m.Key);//升序 把Key換成Value 就是對Value進行排序
//keyValues.OrderByDescending(m => m.Key);//降序
return JsonConvert.SerializeObject(keyValues);
}
/// <summary>
/// 計算簽名
/// </summary>
/// <param name="str">字符串示例 = "appid=123456&codestr=XM001×tamp=1569721598&wid=103" + "&key=N7Q76bLwVL6r5o2CVelafHLBXpvUsJJf";</param>
/// <returns></returns>
public static string UserMd5(string str)
{
string cl = str;
string pwd = "";
MD5 md5 = MD5.Create();//實例化一個md5對像
// 加密後是一個字節類型的數組,這裏要注意編碼UTF8/Unicode等的選擇
byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
// 通過使用循環,將字節類型的數組轉換爲字符串,此字符串是常規字符格式化所得
StringBuilder hex = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
if ((hashBytes[i] & 0xFF) < 0x10)
hex.Append("0");
hex.Append((hashBytes[i] & 0xFF).ToString("x"));
}
return hex.ToString();
}
public class MapInfo
{
public string mapName { get; set; }
public string count { get; set; }
public string type { get; set; }
public string url { get; set; }
public string progress { get; set; }
public string waitCount { get; set; }
}
public class TestInfo
{
public string XMText { get; set; }
public string XMTYPE { get; set; }
public string XMCount { get; set; }
List<MapInfo> mapInfo = new List<MapInfo>();
public List<MapInfo> mapInfos
{
get { return mapInfo; }
set { mapInfo = value; }
}
}//Class_end
/// <summary>
/// 將json字符串保存爲json格式文件
/// </summary>
/// <param name="path">保存路徑</param>
/// <param name="contents">需要保存的字符串</param>
/// <returns></returns>
public static bool SaveFile(string path, string contents)
{
bool success = false;
//追加文件
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
{
using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
{
//開始寫入
sw.WriteLine(contents);
success = true;
}
}
return success;
}
/// <summary>
/// 獲取對應步驟的簽名字符串
/// </summary>
/// <param name="cmd"></param>
/// <param name="appid">appid</param>
/// <param name="codestr">追溯碼,最長64位字符</param>
/// <param name="timestamp">時間戳(秒)</param>
/// <param name="wid">工位編號</param>
/// <param name="key"></param>
/// <param name="tid">測試項編號</param>
/// <param name="tval">測試值</param>
/// <param name="trel">測試結果</param>
/// <returns></returns>
public static string MyGetStr(int cmd,string appid, string codestr, string timestamp, string wid, string key, string trid, string tval, string trel, string tid)
{
string str="";
switch (cmd)
{
case 1: //檢查站位
str = "appid="+ appid + "&codestr="+ codestr + "×tamp="+ timestamp + "&wid="+ wid + "&key="+ key;
break;
case 2://保存測試結果
str = "appid=" + appid + "&codestr=" + codestr + "×tamp=" + timestamp + "&trel=" + trel + "&tid=" + trid + "&wid=" + wid + "&key=" + key;
break;
case 3://獲取導入數據
str = "appid=" + appid + "&codestr=" + codestr + "×tamp=" + timestamp + "&wid=" + wid + "&key=" + key;
break;
case 4://使用測試結果獲取追溯碼
str = "appid=" + appid + "&tid=" + tid + "×tamp=" + timestamp + "&tval=" + tval + "&wid=" + wid + "&key=" + key;
break;
}
return str;
}
/*
* url:POST請求地址
* postData:json格式的請求報文,例如:{"key1":"value1","key2":"value2"}
*/
public static string PostUrl(string url, string postData)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.Timeout = 800;//設置請求超時時間,單位爲毫秒
req.ContentType = "application/json";
byte[] data = Encoding.UTF8.GetBytes(postData);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//獲取響應內容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
/// <summary>
/// 使用POST方式發送json字符串請求結果
/// </summary>
/// <param name="url">url地址</param>
/// <param name="postData">需要發送的json字符串</param>
/// <returns></returns>
public static string PostUrl1(string url, string postData)
{
string result = "";
//json參數
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
byte[] byteData = Encoding.UTF8.GetBytes(postData);
int length = byteData.Length;
request.ContentLength = length;
Stream writer = request.GetRequestStream();
writer.Write(byteData, 0, length);
writer.Close();
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
result = responseString.ToString();
MessageBox.Show(responseString.ToString());
return result;
}
/// <summary>
/// 反序列json,獲取指定的值
/// </summary>
/// <param name="cmd"></param>
/// <param name="jsonstr"></param>
/// <returns></returns>
public static void UNjSON(int cmd, string jsonstr,TextBox textBox)
{
CommonVariable.myMsg = "";
CommonVariable.myErrorcode = "";
JObject myjo = (JObject)JsonConvert.DeserializeObject(jsonstr);
string successValue = myjo["success"].ToString();
switch (cmd)
{
case 1: //檢查站位
//string jsonText1 = "{'tests':[{'tid':'62','tiname':'NAMENNNN'}],'trid':'60641','success':'true','timestamp':'1569721598','sign':'FFE57217B24317F6F5A4F8AB91662035'}";
if(successValue.Equals(true))
{
CommonVariable.myTrid =int.Parse(myjo["trid"].ToString());
JArray myjar = JArray.Parse(myjo["tests"].ToString());
for (var i = 0; i < myjar.Count; i++)
{
JObject j = JObject.Parse(myjar[i].ToString());
CommonVariable.myTid = int.Parse(j["tid"].ToString());
}
}
else
{
CommonVariable.myMsg = myjo["msg"].ToString();
CommonVariable.myErrorcode = myjo["errorcode"].ToString();
textBox.Text = textBox.Text + DateTime.Now.ToString() + ";" + "Errorcode:" + CommonVariable.myErrorcode + ";" + "Msg:" + CommonVariable.myMsg + ";" + "\r\n";
}
break;
case 2://保存測試結果
if (successValue.Equals(true))
{
}
else
{
CommonVariable.myMsg = myjo["msg"].ToString();
CommonVariable.myErrorcode = myjo["errorcode"].ToString();
textBox.Text = textBox.Text + DateTime.Now.ToString() + ";" + "Errorcode:" + CommonVariable.myErrorcode + ";" + "Msg:" + CommonVariable.myMsg + ";" + "\r\n";
}
break;
case 3://獲取導入數據
break;
case 4://使用測試結果獲取追溯碼
break;
}
}
}
}
PS:如有抄襲請告知,侵刪;