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("
", 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; }
    }

    
}
原文地址:https://www.cnblogs.com/HuangLiming/p/14819192.html