Browse Source

Enable nullable annotations for Volo.Abp.Json.Newtonsoft

pull/17020/head
liangshiwei 3 years ago
parent
commit
95fc35f134
  1. 2
      framework/src/Volo.Abp.Json.Newtonsoft/Volo.Abp.Json.Newtonsoft.csproj
  2. 10
      framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpDateTimeConverter.cs
  3. 4
      framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpNewtonsoftJsonSerializer.cs

2
framework/src/Volo.Abp.Json.Newtonsoft/Volo.Abp.Json.Newtonsoft.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.Json.Newtonsoft</AssemblyName> <AssemblyName>Volo.Abp.Json.Newtonsoft</AssemblyName>
<PackageId>Volo.Abp.Json.Newtonsoft</PackageId> <PackageId>Volo.Abp.Json.Newtonsoft</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

10
framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpDateTimeConverter.cs

@ -31,7 +31,7 @@ public class AbpDateTimeConverter : DateTimeConverterBase, ITransientDependency
return objectType == typeof(DateTime) || objectType == typeof(DateTime?); return objectType == typeof(DateTime) || objectType == typeof(DateTime?);
} }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
{ {
var nullable = Nullable.GetUnderlyingType(objectType) != null; var nullable = Nullable.GetUnderlyingType(objectType) != null;
if (reader.TokenType == JsonToken.Null) if (reader.TokenType == JsonToken.Null)
@ -46,7 +46,7 @@ public class AbpDateTimeConverter : DateTimeConverterBase, ITransientDependency
if (reader.TokenType == JsonToken.Date) if (reader.TokenType == JsonToken.Date)
{ {
return _clock.Normalize(reader.Value.To<DateTime>()); return _clock.Normalize(reader.Value!.To<DateTime>());
} }
if (reader.TokenType != JsonToken.String) if (reader.TokenType != JsonToken.String)
@ -72,11 +72,11 @@ public class AbpDateTimeConverter : DateTimeConverterBase, ITransientDependency
} }
} }
var date = DateTime.Parse(dateText, _culture, _dateTimeStyles); var date = DateTime.Parse(dateText!, _culture, _dateTimeStyles);
return _clock.Normalize(date); return _clock.Normalize(date);
} }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{ {
if (value != null) if (value != null)
{ {
@ -97,7 +97,7 @@ public class AbpDateTimeConverter : DateTimeConverterBase, ITransientDependency
} }
else else
{ {
throw new JsonSerializationException($"Unexpected value when converting date. Expected DateTime or DateTimeOffset, got {value.GetType()}."); throw new JsonSerializationException($"Unexpected value when converting date. Expected DateTime or DateTimeOffset, got {value?.GetType()}.");
} }
} }

4
framework/src/Volo.Abp.Json.Newtonsoft/Volo/Abp/Json/Newtonsoft/AbpNewtonsoftJsonSerializer.cs

@ -26,12 +26,12 @@ public class AbpNewtonsoftJsonSerializer : IJsonSerializer, ITransientDependency
public T Deserialize<T>(string jsonString, bool camelCase = true) public T Deserialize<T>(string jsonString, bool camelCase = true)
{ {
return JsonConvert.DeserializeObject<T>(jsonString, CreateJsonSerializerOptions(camelCase)); return JsonConvert.DeserializeObject<T>(jsonString, CreateJsonSerializerOptions(camelCase))!;
} }
public object Deserialize(Type type, string jsonString, bool camelCase = true) public object Deserialize(Type type, string jsonString, bool camelCase = true)
{ {
return JsonConvert.DeserializeObject(jsonString, type, CreateJsonSerializerOptions(camelCase)); return JsonConvert.DeserializeObject(jsonString, type, CreateJsonSerializerOptions(camelCase))!;
} }
private readonly static ConcurrentDictionary<object, JsonSerializerSettings> JsonSerializerOptionsCache = private readonly static ConcurrentDictionary<object, JsonSerializerSettings> JsonSerializerOptionsCache =

Loading…
Cancel
Save