C#中JSON字串和Dictionary字典型別的相互轉換
在開發過程中,往往會遇到資料型別轉換的情況,根據自己的業務,可能轉換型別有多種,下面就說一下json字串和字典型別的轉換。
public static class JsonUntity
{
/// <summary>
/// 將字典型別序列化為json字串
/// </summary>
/// <typeparam name="TKey">字典key</typeparam>
/// <typeparam name="TValue">字典value</typeparam>
/// <param name="dict">要序列化的字典資料</param>
/// <returns>json字串</returns>
public static string SerializeDictionaryToJsonString<TKey, TValue>(Dictionary<TKey, TValue> dict)
{
if (dict.Count == 0)
return "";
string jsonStr = JsonConvert.SerializeObject(dict);
return jsonStr;
}
/// <summary>
/// 將json字串反序列化為字典型別
/// </summary>
/// <typeparam name="TKey">字典key</typeparam>
/// <typeparam name="TValue">字典value</typeparam>
/// <param name="jsonStr">json字串</param>
/// <returns>字典資料</returns>
public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr)
{
if (string.IsNullOrEmpty(jsonStr))
return new Dictionary<TKey, TValue>();
Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);
return jsonDict;
}
}
List
集合序列化可使用:
/// <summary>
/// JSON序列化
/// </summary>
public string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
C#:Json資料反序列化為Dictionary並根據關鍵字獲取指定的值
Json資料:
{
"dataSet": {
"header": {
"returnCode": "0",
"errorInfo": "HTTP請求錯誤",
"version": "V1.0R010",
"totalRows": "2000",
"returnRows": "20"
},
"fieldDefine": {
"assetId": "string",
"serverIdcId": "int",
"inputTime": "datetime"
},
"data": {
"row": [
{
"AssetId": "TCNS2006888",
"ServerIdcId": "1",
"InputTime": "2008-12-12"
},
{
"AssetId": "TCNS2006889",
"ServerIdcId": "2",
"InputTime": "2008-1-1"
}
]
}
}
}
問題:如何獲取header
中的資料行,以便顯示在介面上?
效果圖:
將json
資料轉成dictionary
的程式碼:
/// <summary>
/// 將json資料反序列化為Dictionary
/// </summary>
/// <param name="jsonData">json資料</param>
/// <returns></returns>
private Dictionary<string, object> JsonToDictionary(string jsonData)
{
//例項化JavaScriptSerializer類的新例項
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
//將指定的 JSON 字串轉換為 Dictionary<string, object> 型別的物件
return jss.Deserialize<Dictionary<string, object>>(jsonData);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
使用方法:
private void button1_Click(object sender, EventArgs e)
{
//Json資料
string json = "{\"dataSet\":{\"header\":{\"returnCode\":\"0\",\"errorInfo\":\"HTTP請求錯誤\",\"version\":\"V1.0R010\",\"totalRows\":\"2000\",\"returnRows\":\"20\"},\"fieldDefine\":{\"assetId\":\"string\",\"serverIdcId\":\"int\",\"inputTime\":\"datetime\"},\"data\":{\"row\":[{\"AssetId\":\"TCNS2006888\",\"ServerIdcId\":\"1\",\"InputTime\":\"2008-12-12\"},{\"AssetId\":\"TCNS2006889\",\"ServerIdcId\":\"2\",\"InputTime\":\"2008-1-1\"}]}}}";
Dictionary<string, object> dic = JsonToDictionary(json);//將Json資料轉成dictionary格式
Dictionary<string, object> dataSet=(Dictionary<string, object>)dic["dataSet"];
//使用KeyValuePair遍歷資料
foreach (KeyValuePair<string, object> item in dataSet)
{
if (item.Key.ToString() == "header")//獲取header資料
{
var subItem=(Dictionary<string,object>)item.Value;
foreach (var str in subItem)
{
textBox1.AppendText(str.Key + ":" + str.Value+"\r\n");//顯示到介面
}
break;
}
}
}
相關文章
- 字串和數字的相互轉換字串
- javascript數字和字串的相互轉換JavaScript字串
- javascript數字和字串相互轉換JavaScript字串
- JSON字串與HashMap相互轉換JSON字串HashMap
- json字串和js物件之間相互轉換JSON字串物件
- 字串和陣列的相互轉換字串陣列
- fastjson json字串和JavaBean、List、Map及複雜集合型別的相互轉換。ASTJSON字串JavaBean型別
- iOS字串和陣列的相互轉換iOS字串陣列
- javascript字串和ascii碼的相互轉換JavaScript字串ASCII
- 開發:隨筆記錄之 Json字串和物件的相互轉換筆記JSON字串物件
- 字串、數值 等型別的相互 安全轉換字串型別
- JSON.NET框架實現C#物件和JSON字串的轉換JSON框架C#物件字串
- javascript中字串和陣列的相互轉換JavaScript字串陣列
- c++中數字和字串的轉換C++字串
- SQL Server 字串和時間相互轉換SQLServer字串
- 判斷迴文串 字串/數字相互轉換字串
- Python 漢字區位碼、字串 相互轉換Python字串
- json字串和json格式物件的轉換JSON字串物件
- Android中實現JSON字串和JSON物件的轉換AndroidJSON字串物件
- js實現的字串和陣列的相互轉換JS字串陣列
- C#中JSON轉換類C#JSON
- C# 根據KeyEventArgs與組合鍵字串相互轉換C#字串
- PHP 阿拉伯數字和中文數字的相互轉換PHP
- C#字串轉換為數字的4種方法C#字串
- java 字串與檔案相互轉換Java字串
- c++中utf8字串和gbk字串的轉換C++字串
- Asp.net C# 把 Datatable轉換成JSON 字串ASP.NETC#JSON字串
- 簡單易用的JSON與List相互轉換JSON
- java物件與json物件間的相互轉換Java物件JSON
- String和基本資料型別的相互轉換資料型別
- 陣列與字串方法與相互轉換陣列字串
- string與數字相互轉換
- 字串和16進位制字串的相互轉化字串
- Python字典格式與JSON格式的相互轉換PythonJSON
- Golang 陣列和字串之間的相互轉換[]byte/stringGolang陣列字串
- RVA和RAW相互轉換
- JSON格式字串和物件之間的轉換程式碼JSON字串物件
- 陣列和集合的相互轉換陣列