Converters: 一个包含自定义转换器的集合,这些转换器用于将对象序列化为 JSON 或从 JSON 反序列化为对象。
DateFormatHandling: 控制日期和时间格式的处理方式。例如,可以将日期格式化为特定的字符串格式,或者使用 ISO 8601 格式。
DateTimeZoneHandling: 控制日期时间值的时区处理方式。可以选择本地、UTC 或不处理。
IsoDateTimeFormat: 一个布尔值,用于指示是否将日期时间值格式化为 ISO 8601 格式。
SerializationMemberSelector: 一个委托,允许您自定义哪些属性将被序列化。
ReferenceLoopHandling: 控制循环引用的处理方式。可以选择忽略、警告或抛出异常。
MissingMemberHandling: 控制缺少成员的处理方式。可以选择忽略、抛出异常或引发警告。
DefaultSettings: 使用默认设置进行序列化。这些设置可以覆盖应用程序中的其他特定设置。
ContractResolver: 用于控制 JSON.NET 如何推断和创建 JSON 合同。这允许您自定义命名约定、忽略默认属性等。
NamingStrategy: 用于控制 JSON.NET 中的命名约定。例如,可以使用 CamelCase 或 PascalCase 命名约定。
StringEscapeHandling: 控制字符串转义字符的处理方式。可以选择逃逸或不逃逸转义字符。
ReferenceResolutionPolicy: 控制如何处理重复引用相同的对象。可以选择警告、忽略或抛出异常。
NullValueHandling: 控制如何处理空值。可以选择忽略、表示为 null 或使用默认值。
C#代码
/// <summary>
/// 对象转化为字符串
/// </summary>
/// <param name="obj"></param>
/// <param name="isIgnoreNull">是否忽略null值,默认false</param>
/// <param name="isCamelCase">是否转化为小驼峰</param>
/// <param name="timeFormat">时间的格式化代码</param>
/// <param name="isNeedFormat">是否需要格式化默认false</param>
/// <returns></returns>
public static string ObjectToJson(object obj, bool isIgnoreNull = false,
bool isCamelCase = false, string timeFormat = "", bool isNeedFormat = false)
{
try
{
var settings = new JsonSerializerSettings();
if (isIgnoreNull)
{
settings.DefaultValueHandling = DefaultValueHandling.Ignore;
}
else
{
settings.DefaultValueHandling = DefaultValueHandling.Include;
}
if (isCamelCase)
{
//修改属性名称的序列化方式,首字母小写
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
if (!string.IsNullOrEmpty(timeFormat))
{
//修改时间的序列化方式
settings.Converters.Add(new IsoDateTimeConverter()
{
DateTimeFormat = timeFormat
});
}
if (!isNeedFormat)
{
//是否进行格式化,格式化方便人的查看
settings.Formatting = Formatting.None;
}
return JsonConvert.SerializeObject(obj, settings);
}
catch
{
return string.Empty;
}
}