JSON是一種輕量級的資料交換格式。它是基於javascript文法標準的一個子集。JSON是一種輕量級的資料交換格式。JSON採用完全獨立於語言的文字格式設定,可以很容易在各種網路、平台和程式之間傳輸。JSON的文法很簡單,易於人閱讀和編寫,同時也易於機器解析和產生。 要想熟練的操作json資料,就要先瞭解json資料: JSON的規則很簡單:對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括弧)開始,“}”(右括弧)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’對”之間使用“,”(逗號)分隔。 規則如下:1、映射用冒號(“:)表示。名稱:值2、並列的資料之間用逗號(“,”)分隔。名稱1:值1,名稱2:值23、映射的集合(對象)用大括弧(“{}”)表示。{名稱1:值1,名稱2:值2}4、並列資料的集合(數組)用方括弧(“[]”)表示。[{名稱1:值,名稱2:值2},{名稱1:值,名稱2:值2}]5、元素值可具有的類型:string,number, object, array, true, false, null注意:1、JSON 用冒號(而不是等號)來賦值。每一條指派陳述式用逗號分開。整個對象用大括弧封裝起來。可用大括弧分級嵌套資料。 2、對象描述中儲存的資料可以是字串,數字或者布爾值。對象描述也可儲存函數,那就是對象的方法。6、JSON主要有兩種資料結構(1)由key–value對組成的資料結構。這種資料結構在不同的語言中有不同的實現.例如:在javascript中是一個對象.而在java中是一種Map結構,c語言中是struct,其它的語言中可能為record、 hash table 等。(2)有序集合、這種資料結構在不同語言中可能有list、vertor、數組和序列等實現。7、C#中json資料格式的處理List<T>轉Json[csharp] public static string Obj2Json<T>(T data) { try { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType()); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, data); return Encoding.UTF8.GetString(ms.ToArray()); } } catch { return null; } } Json轉List<T>[csharp] public static Object Json2Obj(String json,Type t) { try { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { return serializer.ReadObject(ms); } } catch { return null; } } DataTable 轉Json[csharp] public static string DataTable2Json(DataTable dt) { if (dt.Rows.Count == 0) { return ""; } StringBuilder jsonBuilder = new StringBuilder(); // jsonBuilder.Append("{"); //jsonBuilder.Append(dt.TableName.ToString()); jsonBuilder.Append("[");//轉換成多個model的形式 for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); // jsonBuilder.Append("}"); return jsonBuilder.ToString(); } 單個對象轉JSON [csharp] public static T Json2Obj<T>(string json) { T obj = Activator.CreateInstance<T>(); using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json))) { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); return (T)serializer.ReadObject(ms); } }