記 .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