1: 合并 JsonDeserializer 和 JsonSerializer -- 在之前版本中,JsonDeserializer 和 JsonSerializer 都有两种模式:1:在默认配置下执行快速的操作;2:在指定了缩进 Json 或引用序列化配置后执行普通的序列化,以前这两种模式由不同的类实现,现在将它们合并,在内部进行判断。理论上,这样做会影响性能,在早期版本的 .Net Freamework 中影响明显,但在新版本 .Net 中因为优化编译,所以影响并不大。这样做的好处是减少代码冗余,无需维护两套代码。
4:增加 AspNetCore 的扩展方法 ConfigureJsonFormatter(this IServiceCollection services)。现在可以很方便将 Swifter.Json 配置到 MVC 了。
bool, byte, sbyte, short, ushort, int, uint, long, ulong, float, double, char.
string, Array, Multidimensional-Arrays, Nullable<T>, Enum, DBNull, decimal,
DataTime, DataTimeOffset, TimeSpan, Guid, Uri, Version, Type.
IList, IList<T>, ICollection, ICollection<T>, IEnumerable, IEnumerable<T>,
IDictionary, IDictionary<TKey, TValue>, DataSet, DataTable, DataRow, IDataReader.
其他类型将被当作模型类型处理。自定义类型处理程序请查看 Wiki
* 此次测试运行在 .Net Core 3.0 预览版上,并增加了 SpanJson 库。
* 测试中的第三方库均来自 Nuget 上最新正式版本。
* 这次评测让我深知 Span<T> 的硬件加速的性能,我会考虑对 .Net Core 2.1+ 进行特殊处理,提高长字符串解析的性能。
Swifter.Json 仍然支持 .Net Framework 2.0+, .Net Core 2.0+, .Net Standard 2.0+, Mono, Xamarin, Unity 等平台。
public class Demo
{
public int Id { get; set; }
public string Name { get; set; }
public static void Main()
{
var json = JsonFormatter.SerializeObject(new { Id = 1, Name = "Dogwei" });
var dic = JsonFormatter.DeserializeObject<Dictionary<string, object>>(json);
var obj = JsonFormatter.DeserializeObject<Demo>(json);;
}
}