using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;

namespace IRaCIS.Core.SCP
{
    public class NullToEmptyStringResolver : DefaultContractResolver
    {


        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);

            var list= type.GetProperties()
                .Select(p =>
                {
                    var jp = base.CreateProperty(p, memberSerialization);
                    jp.ValueProvider = new NullToEmptyStringValueProvider(p);
                    return jp;
                }).ToList();

            var uu = list.Select(t => t.PropertyName).ToList();

            //获取复杂对象属性
          properties =   properties.TakeWhile(t => !uu.Contains(t.PropertyName)).ToList();

          list.AddRange(properties);
          return list;
        }


    }
}