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;
}
}
}
相關推薦
C#中JSON字串和Dictionary字典型別的相互轉換
在開發過程中,往往會遇到資料型別轉換的情況,根據自己的業務,可能轉換型別有多種,下面就說一下json字串和字典型別的轉換。 public static class JsonUntity { /// <summary>
C++中GB2312字串和UTF-8之間的轉換-json中文亂碼問題
在程式設計過程中需要對字串進行不同的轉換,特別是Gb2312和Utf-8直接的轉換。在幾個開源的魔獸私服中,很多都是老外開發的,而暴雪為了能 夠相容世界上的各個字符集也使用了UTF-8。在中國使用VS(VS2005以上版本)開發基本都是使用Gb2312的Unicode字符
C#中父類和子類之間相互轉換
mage all spa 分享 mic ack 子類 utl round 所用到的類文件:Person.cs:Student.cs:Teacher.cs:問題1:總結:1 父類不能直接強制轉換成子類2 只有父類對象指向子類,那麽父類是可以強制轉換成子類,如果父類對象沒有指向
C#中二進位制陣列和圖片之間的相互轉換
二進位制陣列和影象相互轉換的函式: //影象轉換成二進位制 private byte[] ImageToByte(Image Picture) { MemoryStream ms = new MemoryStr
extjs4中json字串和json物件轉換
用extjs也有一段時間了,但有些東西就是記不住,就比如json字串和json物件的轉換,我還是把它記下來。 將json字串轉為json物件 var str = '{ "name": "張三", "age": "23" }' var obj = JSON.parse(str); 將j
js中json字串和json物件轉換
準備: 1.json字串 var jsonString="{”name“:"張三","value":"13"}"; 2.json物件 var jsonObject={”name“:"張三","value":"13"}; 3.json陣列 var jsonArray=[{”
c# 中base64字串和圖片的相互轉行
c#base64字串轉圖片用到了bitmap類,封裝 GDI+ 點陣圖,此點陣圖由圖形影象及其特性的畫素資料組成。 Bitmap 是用於處理由畫素資料定義的影象的物件。 具體bitmap類是什麼可以自己百度查詢,這裡就不多介紹了。 #region base64轉圖
Spark中json字串和DataFrame相互轉換
本文介紹基於Spark(2.0+)的Json字串和DataFrame相互轉換。 json字串轉DataFrame spark提供了將json字串解析為DF的介面,如果不指定生成的DF的schema,預設spark會先掃碼一遍給的json字串,然後推斷生成
C中常量字串和字元陣列的區別
1、 常量字串 在程式碼裡直接出現的”abcdef”這種字串,在程式執行的時候,系統會將它們放在常量區,所謂常量區就是一直存在的,只讀的,不可更改的資料區域,並且一個字串只會有一份。假設你在程式裡有兩行程式碼 char* p1 = “agcd”; char* p2 = “a
Json字串和js物件之間的轉換
Json字串和js物件之間的轉換 JSON.stringify()將js物件轉為json字串 JSON.parse()將JSON字串轉為js物件 補充(json物件和json字串的區別) json 字串 var str1 = '{ "nam
c++中的4種顯式型別的轉換
1.概述 tatic_cast:用於“良性”和“適度良性”的轉換,包括不用強制轉換 const_cast:用於“const”和/或“volatile”進行轉換 reinterpret_cast:轉換為完全不同的意思。為了安全的使用它,關鍵必須轉換回原來的型別。轉換
c++ 中的數字和字符串的轉換
pre end bst span tof lan hid href 開始 理由:一直忘記數字型的字符串和數字之間的轉換,這次總結一下,以便後面再次用到。 其實 C++ 已經給我們寫好了相應的函數,直接拿來用即可 QA1:如何把一個數字轉換為一個數字字符串?(這個不是很常
C# Unix時間戳和DateTime類型相互轉換
c# double timezone 時間戳 convert ret mil alt 相互轉換 /// <summary> /// 將Unix時間戳轉換為DateTime類型時間 /// </summary>
Java中SQL DATE和 UTIL DATE 的相互轉換
span clas -m cep sta .get turn try urn public String getStringtime (java.sql.Date sdate ){ java.util.Date date = new j
JS 時間字串和時間戳的相互轉換
待解決問題 JS開發遇到了個問題:前端vue的UI元件生成的時間字串格式是 2018-9-12 9:11:23,而後臺只能識別2018-09-12 09:11:23這樣的時間字串,即要將時間字串格式做轉換,數字是個位數的值前面要補0。 解決思路 將現有的時間字串先
VC中BSTR、Char*、CString型別相互轉換
1、char*轉換成CString 若將char*轉換成CString,除了直接賦值外,還可使用CString::format進行。例如: char chArray[] = "This is a test"; char * p = "This is a test"; 或 LPSTR p = "This i
JSON資料和Java物件的相互轉換
* JSON解析器: * 常見的解析器:Jsonlib,Gson,fastjson,jackson 1. JSON轉為Java物件 1. 匯入jackson的相關jar包 2. 建立Jackson核心物件
C# 中 double 型數值與 DateTime 的相互轉換
double n = 0; DateTime origintime = DateTime.FromOADate(0); // origintime.ToString()等於“1899-12-30 0:00:00” while (DateTime.FromOADate(n) != Command
json物件和java物件的相互轉換方法(json-lib、jackson、fastjson、gson)
一 使用json-lib包下的JSONObject和JSONArray轉換 程式碼如下: package com.test.test; import java.util.ArrayList; import java.util.List; import com.cn.e
Java字串和輸入流的相互轉換
在讀取網路資源時經常要用到字串和輸入流之間的相互轉化,找到了些方法,記錄一下。 將字串轉化為輸入流,程式碼如下: public static InputStream getStringStream(S