记 .net core3.1 newtonjson增加long转string的全局设置后cpu100%


转换器如下:

 

public class LongJsonConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken jt = JValue.ReadFrom(reader);

return jt.Value<long>();
}

public override bool CanConvert(Type objectType)
{
return typeof(long).Equals(objectType);
}

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value.ToString());
}
}

 

全局设置如下:

public static void AddApi(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
services.AddControllers(options =>
{
options.Filters.Add<AsyncExceptionFilter>();
options.Filters.Add<AsyncAuthorizationFilter>();

//替换默认json引擎,改用newtonsoftjson
}).AddNewtonsoftJson(options =>
{
options.SerializerSettings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//options.SerializerSettings.Converters.Add(new LongJsonConverter());
});
}

 

然后4核16g的服务器cpu开始飙起来了,每个字段反射匹配是否long,改成注解后cpu正常了。

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM