json 递归

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp11
{
    class Program
    {
        static void Main(string[] args)
        {
            #region
            string jsonText = "[{\"code\": \"LH201909100021\",         \"customerCode\": \"80000000\",         \"depositAmount\": \"179\",         \"memberCode\": \"\",         \"netAmount\": \"179\",         \"orderAmount\": \"179\",         \"orderType\": \"Z123\",         \"pointOfService\": \"K900QTD014\",         \"promotionDiscount\": \"0\",         \"relPosOrder\": \"\",         \"saleDate\": \"20191011172645\",         \"salesCardType\": \"\",         \"shopassistant\": \"onlinery\",         \"specialDiscount\": \"\",         \"standardDiscount\": \"\",         \"temporaryDiscount\": \"\",         \"totalDiscount\": \"0\"     },     {         \"code\": \"K210QTD0021191009092742\",         \"customerCode\": \"0020005000\",         \"depositAmount\": \"0\",         \"memberCode\": \"SQ\",         \"netAmount\": \"60\",         \"orderAmount\": \"60\",         \"orderType\": \"Z112\",         \"pointOfService\": \"K210QTD002\",         \"promotionDiscount\": \"0\",         \"relPosOrder\": \"\",         \"saleDate\": \"20191009093011\",         \"salesCardType\": \"SQ\",         \"shopassistant\": \"999\",         \"specialDiscount\": \"0\",         \"standardDiscount\": \"0\",         \"temporaryDiscount\": \"0\",         \"totalDiscount\": \"0\",         \"hpaymentInfos\": [             {                 \"cardCode\": \"\",                 \"cardDisType\": \"\",                 \"discountAmount\": \"\",                 \"payAmount\": \"60\",                 \"paymentType\": \"ZG01\",                 \"pointAmount\": \"\",                 \"thirdDiscount\": \"\",                 \"thirdSubsidy\": \"\"             }         ],         \"posOrderEntries\": [             {                 \"actualAmount\": \"30\",                 \"discountAmount\": \"0\",                 \"entryNumber\": \"1\",                 \"extracolumn\": \"K210QTD0021191009092742\",                 \"minsqty\": \"0\",                 \"netAmount\": \"60\",                 \"productCode\": \"000000008040600003\",                 \"promotionDiscount\": \"\",                 \"quantity\": \"2\",                 \"specialDiscount\": \"0\",                 \"standardDiscount\": \"0\",                 \"systemAmount\": \"30\",                 \"temporaryDiscount\": \"0\",                 \"cardIds\": [                     {                         \"cardIds\": \"400000004452136649-400000004452136649\",                         \"quantity\": \"1\"                     },                     {                         \"cardIds\": \"400000004452157237-400000004452157237\",                         \"quantity\": \"1\"                     }                 ]             }         ]     } ]";
            //Dictionary<string, object> dd = jsonText.Trim(new char[] { '{', '}' }).Split(',').ToDictionary(s => s.Split(':')[0], s => (object)s.Split(':')[1]);
            //JObject json1 = (JObject)JsonConvert.DeserializeObject(jsonText);
            //JArray array = (JArray)json1["W_OFF_BURSUBSIDY"];

            //int i = array.Count;

            //string aa = "";
            //foreach (var jObject in array)
            //{
            //    //赋值属性
            //    aa = jObject["USER_NAME"].ToString();//获取字符串中id值
            //}
            //Console.WriteLine(aa);
            #endregion
            List<KeyValue> jsonList = new List<KeyValue>();
            jsonList = DG(jsonText, jsonList);
            if (jsonList.Count > 0)
            {

            }
        }
        public static List<KeyValue> DG(string json, List<KeyValue> strList)
        {
            //json = json.Replace("\r\n", string.Empty);
            //json = json.Replace("[", string.Empty);
            //json = json.Replace("]", string.Empty);
            JArray jar = (JArray)JsonConvert.DeserializeObject(json);
            foreach (JObject o in jar)
            {

                //var o = JObject.Parse(json);
                foreach (var x in o)
                {
                    if (x.Value.GetType() == typeof(JObject) || (x.Value.GetType() == typeof(JArray)))
                    {
                        DG(x.Value.ToString(), strList);
                    }
                    else
                    {
                        KeyValue keyValue = new KeyValue();
                        keyValue.key = x.Key;
                        keyValue.value = x.Value.ToString();
                        strList.Add(keyValue);
                    }

                }
            }
            return strList;
        }
    }
    public class KeyValue
    {
        public string key { get; set; }
        public string value { get; set; }
    }

    
}

 

posted @ 2021-05-27 18:41  黄立明02  阅读(58)  评论(0编辑  收藏  举报