最近计划用wtm和volcore给一款漂亮的拖拽大屏系统做一下.NET后台服务。哎,不得不说java的后端还真是多,简直无处不在,人的代码也写的挺整洁不错的。
一、遇到问题
在用wtm生成的api和goview对接的过程中发现,总是在报错。和goview对着我写接口返回数据一看,全是字符串。他的项目还用的ts,这特么的囧的。我试了各种办法,例如直接返回list数据、改成return Json呀什么的等等一通操作。最后一看配置文件,刘总在options.UseWtmJsonOptions()的配置中,居然全部采用转字符串策略。
public static void UseWtmJsonOptions(this JsonOptions options)
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString;
options.JsonSerializerOptions.AllowTrailingCommas = true;
options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
options.JsonSerializerOptions.Converters.Add(new StringIgnoreLTGTConverter());
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
options.JsonSerializerOptions.Converters.Add(new BoolStringConverter());
options.JsonSerializerOptions.Converters.Add(new DateRangeConverter());
options.JsonSerializerOptions.Converters.Add(new PocoConverter());
options.JsonSerializerOptions.Converters.Add(new TypeConverter());
options.JsonSerializerOptions.Converters.Add(new DynamicDataConverter());
CoreProgram.DefaultJsonOption = options.JsonSerializerOptions;
JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions();
jsonSerializerOptions.PropertyNamingPolicy = null;
jsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString;
jsonSerializerOptions.AllowTrailingCommas = true;
jsonSerializerOptions.Converters.Add(new DateTimeConverter());
jsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
jsonSerializerOptions.Converters.Add(new BoolStringConverter());
jsonSerializerOptions.Converters.Add(new DateRangeConverter());
jsonSerializerOptions.Converters.Add(new PocoConverter());
jsonSerializerOptions.Converters.Add(new TypeConverter());
jsonSerializerOptions.Converters.Add(new DynamicDataConverter());
CoreProgram.DefaultPostJsonOption = jsonSerializerOptions;
}
看了半天官方文档,完全不会解决,最后没啥办法了,只能求救刘总。
二、解决办法
刘总 一句话直接搞定,就是在配置文件中加一个设置,覆盖框架默认的设置。
options.JsonSerializerOptions.NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.Strict;
加上之后在测试,直接解决问题。这个时候,return Ok也是完全没问题的。