/// <summary> /// 序列化JSON字符串不附带值为NULL的字符串 /// </summary> /// <param name="jsonData"></param> /// <param name="contractResolverType"></param> /// <returns></returns> public static string ToJsonWithOutNull(this object jsonData, ContractResolverType contractResolverType = ContractResolverType.CamelCase) { return(JsonConvert.SerializeObject(jsonData, new JsonSerializerSettings { ContractResolver = GetContractResolver(contractResolverType), NullValueHandling = NullValueHandling.Ignore })); }
/// <summary> /// 将对象转换为Json字符串 /// </summary> /// <param name="jsonData"></param> /// <param name="contractResolverType"></param> /// <returns></returns> public static string ToJson(this object jsonData, ContractResolverType contractResolverType = ContractResolverType.CamelCase) { return(JsonConvert.SerializeObject(jsonData, new JsonSerializerSettings { ContractResolver = GetContractResolver(contractResolverType), ReferenceLoopHandling = ReferenceLoopHandling.Ignore })); }
/// <summary> /// 获取IContractResolver /// </summary> /// <param name="contractResolverType"></param> /// <returns></returns> private static IContractResolver GetContractResolver(ContractResolverType contractResolverType) { switch (contractResolverType) { case ContractResolverType.Default: return(DefaultContractResolver); case ContractResolverType.CamelCase: return(CamelCasePropertyNamesContractResolver); default: return(DefaultContractResolver); } }
/// <summary> /// Returns the JsonMediaTypeFormatter to use with this controller. /// </summary> /// <param name="resolverType"> /// A ContractResolverType representing the desired behavior of serializationProperties, OptIn or OptOut. /// </param> /// <param name="properties"> /// A list of properties to exclude or include, depending on the ContractResolverType, in the serialized result. /// </param> /// <returns>A configured instance of JsonMediaTypeFormatter</returns> protected JsonMediaTypeFormatter JsonFormatter(ContractResolverType resolverType, params string[] properties) { JsonMediaTypeFormatter retVal = new JsonMediaTypeFormatter { SerializerSettings = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Utc, Formatting = Formatting.Indented, ContractResolver = new ContractResolver(resolverType, properties), }, }; retVal.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()); return(retVal); }
/// <summary> /// Initializes a new instance of the <see cref="ContractResolver"/> class with the supplied properties list, resolver /// type and includeSecondaryTypes value. /// </summary> /// <param name="resolverType"> /// The type of contract resolver; determines whether the supplied list will be included or excluded from serialization. /// </param> /// <param name="properties">A list of properties to include or exclude from serialization.</param> public ContractResolver(ContractResolverType resolverType, params string[] properties) : base() { Properties = properties; ResolverType = resolverType; }