使用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;
        }

猜你喜欢

转载自blog.csdn.net/zoysia1314/article/details/86237972
今日推荐