1. 程式人生 > >使用Newtonsoft.Json讀寫Json字串

使用Newtonsoft.Json讀寫Json字串

    /// <summary>
        /// 處理層巢狀資料
        /// 最大支援四層
        /// </summary>
        public static List<string[]> GetDataForCommon(string data, int deepCount)
        {
            List<string[]> stringList = new List<string[]>();

            string[] temp = data.Split('+'
); if (temp.Length != 3 || string.IsNullOrEmpty(temp[2])) { return null; } JObject jO = JObject.Parse(temp[2]); JToken jData = jO.GetValue("data"); if (jData == null) { return null; }
var deepData1 = ((JObject)jData).Properties().GetEnumerator(); if (deepCount == 1) { while (deepData1.MoveNext()) { string[] strs = new string[5]; if (deepData1.Current == null) {
continue; } strs[4] = temp[0]; strs[0] = deepData1.Current.Name; JArray jArray = deepData1.Current.Value as JArray; if (jArray == null) { continue; } strs[1] = jArray[0].ToString(); strs[2] = jArray[1].ToString(); strs[3] = jArray[2].ToString(); stringList.Add(strs); } } else if (deepCount == 2) { while (deepData1.MoveNext()) { if (deepData1.Current == null) { continue; } var deepData2 = ((JObject)deepData1.Current.Value).Properties().GetEnumerator(); while (deepData2.MoveNext()) { if (deepData2.Current == null) { continue; } string[] strs = new string[6]; strs[5] = temp[0]; strs[0] = deepData1.Current.Name; strs[1] = deepData2.Current.Name; JArray jArray = deepData2.Current.Value as JArray; if (jArray == null) { continue; } strs[2] = jArray[0].ToString(); strs[3] = jArray[1].ToString(); strs[4] = jArray[2].ToString(); stringList.Add(strs); } } } else if (deepCount == 3) { while (deepData1.MoveNext()) { if (deepData1.Current == null) { continue; } var deepData2 = ((JObject)deepData1.Current.Value).Properties().GetEnumerator(); while (deepData2.MoveNext()) { if (deepData2.Current == null) continue; var deepData3 = ((JObject)deepData2.Current.Value).Properties().GetEnumerator(); while (deepData3.MoveNext()) { if (deepData3.Current == null) continue; string[] strs = new string[7]; strs[6] = temp[0]; strs[0] = deepData1.Current.Name; strs[1] = deepData2.Current.Name; strs[2] = deepData3.Current.Name; JArray jArray = deepData3.Current.Value as JArray; if (jArray == null) { continue; } strs[3] = jArray[0].ToString(); strs[4] = jArray[1].ToString(); strs[5] = jArray[2].ToString(); stringList.Add(strs); } } } } else if (deepCount == 4) { while (deepData1.MoveNext()) { if (deepData1.Current == null) { continue; } var deepData2 = ((JObject)deepData1.Current.Value).Properties().GetEnumerator(); while (deepData2.MoveNext()) { if (deepData2.Current == null) continue; var deepData3 = ((JObject)deepData2.Current.Value).Properties().GetEnumerator(); while (deepData3.MoveNext()) { if (deepData3.Current == null) continue; var deepData4 = ((JObject)deepData3.Current.Value).Properties().GetEnumerator(); while (deepData4.MoveNext()) { if (deepData4.Current == null) continue; string[] strs = new string[8]; strs[7] = temp[0]; strs[0] = deepData1.Current.Name; strs[1] = deepData2.Current.Name; strs[2] = deepData3.Current.Name; strs[3] = deepData4.Current.Name; JArray jArray = deepData4.Current.Value as JArray; if (jArray == null) { continue; } strs[4] = jArray[0].ToString(); strs[5] = jArray[1].ToString(); strs[6] = jArray[2].ToString(); stringList.Add(strs); } } } } } else { //MessageBox.Show("維數太高,沒寫解析方法,最大支援4維"); } return stringList; }