当前位置: 首页 > news >正文

域名网站注册认证中小企业微信网站建设

域名网站注册认证,中小企业微信网站建设,漳州微信网站开发,做网站推销自己的产品这可行吗当你的使用的Json库是System.Text.Json#xff0c;而不是Newtonsoft.Json库的时候#xff0c;你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇…当你的使用的Json库是System.Text.Json而不是Newtonsoft.Json库的时候你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇到System.InvalidCastException:“Unable to cast object of type ‘System.Text.Json.JsonElement’ to type ‘System.Int32’.”这种错误的时候是由于System.Text.Json类库进行json转化时没有明确类型的基础类型导致的。通常可能是某一个属性类型使用object情况。 A1:解决办法是写一个 对象Json转换器 类如下所示 /// summary/// 对象Json转化器/// /summarypublic class ObjectJsonConverter : JsonConverterObject{public override object? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options){switch (reader.TokenType){case JsonTokenType.String:if (DateTime.TryParse(reader.GetString(), out DateTime dateTime))return dateTime;return reader.GetString();case JsonTokenType.Number:if (reader.TryGetInt32(out int intValue))return intValue;else if (reader.TryGetDouble(out double doubleValue))return doubleValue;else if (reader.TryGetDecimal(out decimal decimalValue))return decimalValue;throw new JsonException(Unsupported number format);case JsonTokenType.True:return true;case JsonTokenType.False:return false;case JsonTokenType.Null:return null;case JsonTokenType.StartObject:return JsonSerializer.DeserializeJsonElement(ref reader, options);case JsonTokenType.StartArray:return JsonSerializer.DeserializeJsonElement[](ref reader, options);default:throw new JsonException($Unexpected token type: {reader.TokenType});}}public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options){if (value null) writer.WriteNullValue();else if ((value is string || value is DateTime || value is Guid)) writer.WriteStringValue(value.ToString());else if (value is int intValue) writer.WriteNumberValue(intValue);else if (value is double doubleValue) writer.WriteNumberValue(doubleValue);else if (value is decimal decimalValue) writer.WriteNumberValue(decimalValue);else if (value is char charValue) writer.WriteNumberValue(charValue);else if (value is bool boolValue) writer.WriteBooleanValue(boolValue);else if (value is JsonElement jsonElement) jsonElement.WriteTo(writer);else if (value is JsonElement[] jsonElements){writer.WriteStartArray();foreach (var element in jsonElements){element.WriteTo(writer);}writer.WriteEndArray();}else JsonSerializer.Serialize(writer, value, value.GetType(), options);}}使用如下: builder.Services.AddJsonOptions(options {// 添加Object格式化转换器options.JsonSerializerOptions.Converters.Add(new ObjectJsonConverter()); });Q2:在webapi接口返回结果中时间属性的值返回的形式如:“2024-01-01T10:00:00”,而我们想要的是不带T的格式比如2024-01-01 10:00:00这种。 A2:需要定义一个时间Json转换器DateTimeJsonConverter代码如下 /// summary/// 设置Json默认DateTime格式化/// /summarypublic class DateTimeJsonConverter : JsonConverterDateTime{private readonly string _format;public DateTimeJsonConverter(string format){_format format;}public override void Write(Utf8JsonWriter writer, DateTime dateTime, JsonSerializerOptions options){writer.WriteStringValue(dateTime.ToString(_format));}public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options){if (reader.TokenType JsonTokenType.String){if (DateTime.TryParse(reader.GetString(), out DateTime dateTime))return dateTime;}return reader.GetDateTime();}}使用如下 builder.Services.AddJsonOptions(options {// 添加时间格式化转换器options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter(yyyy-MM-dd HH:mm:ss)); });通常完整一点的配置如下 builder.Services.AddJsonOptions(options {// 设置编码格式 options.JsonSerializerOptions.Encoder JavaScriptEncoder.Create(UnicodeRanges.All); // 是否格式化文本 options.JsonSerializerOptions.WriteIndented true; //不区分大小写 options.JsonSerializerOptions.PropertyNameCaseInsensitive true;//不区分大小写 // 字段采用驼峰式命名 options.JsonSerializerOptions.PropertyNamingPolicy JsonNamingPolicy.CamelCase; // 忽略null值 //options.JsonSerializerOptions.DefaultIgnoreCondition JsonIgnoreCondition.WhenWritingNull; // 忽略只读字段 //options.JsonSerializerOptions.IgnoreReadOnlyProperties true; // 对字典的键进行驼峰命名 options.JsonSerializerOptions.DictionaryKeyPolicy JsonNamingPolicy.CamelCase; //不允许有注释的不标准json options.JsonSerializerOptions.ReadCommentHandling JsonCommentHandling.Disallow; // 允许属性值末尾存在逗号 options.JsonSerializerOptions.AllowTrailingCommas true; // 处理循环引用类型 options.JsonSerializerOptions.ReferenceHandler ReferenceHandler.IgnoreCycles; //枚举类型转string配置避免转int //options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); // 添加时间格式化转换器 options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter(yyyy-MM-dd HH:mm:ss)); // 添加Object格式化转换器 options.JsonSerializerOptions.Converters.Add(new ObjectJsonConverter()); });Q3:遇到枚举的属性如果想在接口返回的时候不返回数字而想返回字符串的情况 A3:在配置的时候进行如下配置即可: builder.Services.AddJsonOptions(options {//枚举类型转string配置避免转intoptions.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); });此外在枚举的地方添加[JsonConverter(typeof(JsonStringEnumConverter))]特性即可返回字符串,代码如下: public class Sample{public int Id { get; set; }public object Value { get; set; }[JsonConverter(typeof(JsonStringEnumConverter))]public SampleType Type { get; set; }}public enum SampleType{AAAA,BBBB,CCCC}如果有不够的地方自行添加。
http://www.hkea.cn/news/14483821/

相关文章:

  • 网站优化 北京江苏建设类高级工程师在那个网站公示
  • 做网站的客户可信网站值得做吗
  • 网络营销的特点主要体现为()seo中国是什么
  • 小程序代码做网站民非单位年检那个网站做
  • 深圳建站网站公司做散客机票的网站如何推广
  • 旅游建设网站目的及功能定位简单的网站开发的软件有哪些
  • 网站广告位代码网站推广排名外包
  • mysql数据库做网站discuz 做网站可以吗
  • 网站建设方案书下载本地好的app开发公司
  • 专做电子产品评测的网站做网站有2个前提条件_一个是网站
  • 男人和女人做哪个网站网站创建公司
  • 温州网站外包三亚门户
  • 开发手机网站教程可以上传自己做的视频的网站
  • 快要到期的域名网站欣赏艺术类的网站
  • 做网站设计的公司柳州网站建设入门pdf
  • 做a网站本网站仅支持ie浏览器
  • 网站仿站工具网络营销包括
  • 网站模板信息不存在企业运营管理岗位职责
  • 电子商务网站推广的方式有哪些手机做ppt的软件
  • 黑龙江 网站开发英文网站如何做seo
  • 网站建设用阿里还是华为云微信企业邮箱怎么注册
  • 网站界面设计的发展趋势网站vps
  • 百度公司网站seo方案什么是网站?
  • 惠州专业的免费建站网络广告的特征是()多选题
  • 网站域名可以自己做吗中国私企建筑公司十大排名
  • 网站快速排名优化价格图片编辑在线
  • 手机网站展示vi设计是平面设计吗
  • 麓谷网站建设淘宝网站图片维护怎么做
  • 企业做网站的困惑建筑人才网招收土建预算员实学生
  • 做网站郑州公司网站建设管理概述