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;
}
}
}
相關文章
- JSON字串與HashMap相互轉換JSON字串HashMap
- Python 漢字區位碼、字串 相互轉換Python字串
- 判斷迴文串 字串/數字相互轉換字串
- C#中JSON轉換類C#JSON
- c++中數字和字串的轉換C++字串
- Python字典格式與JSON格式的相互轉換PythonJSON
- Golang 陣列和字串之間的相互轉換[]byte/stringGolang陣列字串
- String和基本資料型別的相互轉換資料型別
- java 字串與檔案相互轉換Java字串
- c++中字元、字串和數字間的轉換C++字元字串
- c++中utf8字串和gbk字串的轉換C++字串
- PHP 阿拉伯數字和中文數字的相互轉換PHP
- fastjson: json物件,json物件陣列,javabean物件,json字串之間的相互轉化ASTJSON物件陣列JavaBean字串
- string與數字相互轉換
- 陣列與字串方法與相互轉換陣列字串
- (C#)時間戳、DateTime相互轉換C#時間戳
- C#:檔案、byte[]、Stream相互轉換C#
- C#:Dictionary轉DataTableC#
- 字串json陣列怎麼轉換成jsonobject型別字串JSON陣列Object型別
- json字串 轉換為陣列JSON字串陣列
- json字串與物件互相轉換JSON字串物件
- JavaScript陣列與字串相互轉換 join、splitJavaScript陣列字串
- mysql時間與字串之間相互轉換MySql字串
- C#/VB.NET 實現Word和ODT文件相互轉換C#
- JS實現JSON物件與URL引數的相互轉換JSON物件
- JSON字串轉換為物件直接量JSON字串物件
- js 陣列,字串,json互相轉換陣列字串JSON
- 中文數字阿拉伯數字相互轉換
- json與字典的相互轉化JSON
- PostgreSQL中將物件oid和物件名相互轉換SQL物件
- JavaScript字串轉換數字JavaScript字串
- C 語言整數與字串的相互轉換介紹字串
- mysql 字串和數字比,字串會隱式轉換為數字0MySql字串
- python中列表、字典和字串的互相轉換Python字串
- Java 中 CLOB 和字串之間的轉換Java字串
- Go 中數字轉換字串的正確姿勢Go字串
- JavaScript將物件轉換為JSON格式字串JavaScript物件JSON字串
- eval()將JSON格式字串轉換為物件JSON字串物件