Browse Source

Enable nullable annotations for Volo.Abp.Json.SystemTextJson

pull/17020/head
liangshiwei 3 years ago
parent
commit
02199e52d4
  1. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj
  2. 4
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpSystemTextJsonSerializer.cs
  3. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpNullableStringToGuidConverter.cs
  4. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToBooleanConverter.cs
  5. 10
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToEnumConverter.cs
  6. 6
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToEnumFactory.cs
  7. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToGuidConverter.cs
  8. 20
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/ObjectToInferredTypesConverter.cs
  9. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpDateTimeConverterModifier.cs
  10. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpIgnorePropertiesModifiers.cs
  11. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpIncludeExtraPropertiesModifiers.cs
  12. 2
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpIncludeNonPublicPropertiesModifiers.cs

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

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

4
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpSystemTextJsonSerializer.cs

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

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpNullableStringToGuidConverter.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Json.SystemTextJson.JsonConverters;
public class AbpNullableStringToGuidConverter : JsonConverter<Guid?>
{
private JsonSerializerOptions _writeJsonSerializerOptions;
private JsonSerializerOptions? _writeJsonSerializerOptions;
public override Guid? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToBooleanConverter.cs

@ -8,7 +8,7 @@ namespace Volo.Abp.Json.SystemTextJson.JsonConverters;
public class AbpStringToBooleanConverter : JsonConverter<bool>
{
private JsonSerializerOptions _writeJsonSerializerOptions;
private JsonSerializerOptions? _writeJsonSerializerOptions;
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{

10
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToEnumConverter.cs

@ -9,9 +9,9 @@ public class AbpStringToEnumConverter<T> : JsonConverter<T>
{
private readonly JsonStringEnumConverter _innerJsonStringEnumConverter;
private JsonSerializerOptions _readJsonSerializerOptions;
private JsonSerializerOptions? _readJsonSerializerOptions;
private JsonSerializerOptions _writeJsonSerializerOptions;
private JsonSerializerOptions? _writeJsonSerializerOptions;
public AbpStringToEnumConverter()
: this(namingPolicy: null, allowIntegerValues: true)
@ -19,7 +19,7 @@ public class AbpStringToEnumConverter<T> : JsonConverter<T>
}
public AbpStringToEnumConverter(JsonNamingPolicy namingPolicy = null, bool allowIntegerValues = true)
public AbpStringToEnumConverter(JsonNamingPolicy? namingPolicy = null, bool allowIntegerValues = true)
{
_innerJsonStringEnumConverter = new JsonStringEnumConverter(namingPolicy, allowIntegerValues);
}
@ -50,11 +50,11 @@ public class AbpStringToEnumConverter<T> : JsonConverter<T>
public override T ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return (T)Enum.Parse(typeToConvert, reader.GetString());
return (T)Enum.Parse(typeToConvert, reader.GetString()!);
}
public override void WriteAsPropertyName(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
{
writer.WritePropertyName(Enum.GetName(typeof(T), value));
writer.WritePropertyName(Enum.GetName(typeof(T), value)!);
}
}

6
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToEnumFactory.cs

@ -7,7 +7,7 @@ namespace Volo.Abp.Json.SystemTextJson.JsonConverters;
public class AbpStringToEnumFactory : JsonConverterFactory
{
private readonly JsonNamingPolicy _namingPolicy;
private readonly JsonNamingPolicy? _namingPolicy;
private readonly bool _allowIntegerValues;
public AbpStringToEnumFactory()
@ -16,7 +16,7 @@ public class AbpStringToEnumFactory : JsonConverterFactory
}
public AbpStringToEnumFactory(JsonNamingPolicy namingPolicy, bool allowIntegerValues)
public AbpStringToEnumFactory(JsonNamingPolicy? namingPolicy, bool allowIntegerValues)
{
_namingPolicy = namingPolicy;
_allowIntegerValues = allowIntegerValues;
@ -33,7 +33,7 @@ public class AbpStringToEnumFactory : JsonConverterFactory
typeof(AbpStringToEnumConverter<>).MakeGenericType(typeToConvert),
BindingFlags.Instance | BindingFlags.Public,
binder: null,
new object[] { _namingPolicy, _allowIntegerValues },
new object?[] { _namingPolicy, _allowIntegerValues },
culture: null)!;
}
}

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToGuidConverter.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Json.SystemTextJson.JsonConverters;
public class AbpStringToGuidConverter : JsonConverter<Guid>
{
private JsonSerializerOptions _writeJsonSerializerOptions;
private JsonSerializerOptions? _writeJsonSerializerOptions;
public override Guid Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{

20
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/ObjectToInferredTypesConverter.cs

@ -12,16 +12,16 @@ public class ObjectToInferredTypesConverter : JsonConverter<object>
public override object Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options) => reader.TokenType switch
{
JsonTokenType.True => true,
JsonTokenType.False => false,
JsonTokenType.Number when reader.TryGetInt64(out long l) => l,
JsonTokenType.Number => reader.GetDouble(),
JsonTokenType.String when reader.TryGetDateTime(out DateTime datetime) => datetime,
JsonTokenType.String => reader.GetString(),
_ => JsonDocument.ParseValue(ref reader).RootElement.Clone()
};
JsonSerializerOptions options) => (reader.TokenType switch
{
JsonTokenType.True => true,
JsonTokenType.False => false,
JsonTokenType.Number when reader.TryGetInt64(out long l) => l,
JsonTokenType.Number => reader.GetDouble(),
JsonTokenType.String when reader.TryGetDateTime(out DateTime datetime) => datetime,
JsonTokenType.String => reader.GetString(),
_ => JsonDocument.ParseValue(ref reader).RootElement.Clone()
})!;
public override void Write(
Utf8JsonWriter writer,

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpDateTimeConverterModifier.cs

@ -10,7 +10,7 @@ namespace Volo.Abp.Json.SystemTextJson.Modifiers;
public class AbpDateTimeConverterModifier
{
private IServiceProvider _serviceProvider;
private IServiceProvider _serviceProvider = default!;
public Action<JsonTypeInfo> CreateModifyAction(IServiceProvider serviceProvider)
{

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpIgnorePropertiesModifiers.cs

@ -9,7 +9,7 @@ namespace Volo.Abp.Json.SystemTextJson.Modifiers;
public class AbpIgnorePropertiesModifiers<TClass, TProperty>
where TClass : class
{
private Expression<Func<TClass, TProperty>> _propertySelector;
private Expression<Func<TClass, TProperty>> _propertySelector = default!;
public Action<JsonTypeInfo> CreateModifyAction(Expression<Func<TClass, TProperty>> propertySelector)
{

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpIncludeExtraPropertiesModifiers.cs

@ -17,7 +17,7 @@ public static class AbpIncludeExtraPropertiesModifiers
.Where(x => x.AttributeProvider is MemberInfo)
.FirstOrDefault(x =>
x.PropertyType == typeof(ExtraPropertyDictionary) &&
x.AttributeProvider.As<MemberInfo>().Name == nameof(ExtensibleObject.ExtraProperties) &&
x.AttributeProvider!.As<MemberInfo>().Name == nameof(ExtensibleObject.ExtraProperties) &&
x.Set == null);
if (propertyJsonInfo != null)

2
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/Modifiers/AbpIncludeNonPublicPropertiesModifiers.cs

@ -9,7 +9,7 @@ namespace Volo.Abp.Json.SystemTextJson.Modifiers;
public class AbpIncludeNonPublicPropertiesModifiers<TClass, TProperty>
where TClass : class
{
private Expression<Func<TClass, TProperty>> _propertySelector;
private Expression<Func<TClass, TProperty>> _propertySelector = default!;
public Action<JsonTypeInfo> CreateModifyAction(Expression<Func<TClass, TProperty>> propertySelector)
{

Loading…
Cancel
Save