System.Text.Json como modificar um type info resolver existente
Use o novo método de extensão WithAddedModifier no .NET 8 para modificar facilmente qualquer contrato de serialização IJsonTypeInfoResolver sem criar um resolver novo do zero.
Existem situações em que criar um IJsonTypeInfoResolver totalmente novo parece exagero, sendo que o resolver padrão (ou qualquer outro já definido) daria conta do recado com apenas uma ou duas pequenas alterações.
Até agora, dava para mexer na propriedade DefaultJsonTypeInfoResolver.Modifiers no caso do type info resolver padrão, mas não havia nada nativo para resolvers definidos pelo desenvolvedor ou vindos de pacotes.
Para esses casos em particular, a partir do .NET 8, ganhamos um novo método de extensão que permite introduzir modificações de forma fácil em contratos de serialização IJsonTypeInfoResolver arbitrários. O método de extensão também pode ser combinado com o type info resolver padrão, claro.
public static IJsonTypeInfoResolver WithAddedModifier(
this IJsonTypeInfoResolver resolver,
Action<JsonTypeInfo> modifier)
Isso cria para você uma instância de JsonTypeInfoResolverWithAddedModifiers (um IJsonTypeInfoResolver) capaz de aplicar suas modificações no esquema.
Vamos a um exemplo simples, supondo um MyTypeInfoResolver qualquer:
var options = new JsonSerializerOptions
{
TypeInfoResolver = new MyTypeInfoResolver()
.WithAddedModifier(typeInfo =>
{
foreach (JsonPropertyInfo prop in typeInfo.Properties)
prop.Name = prop.Name.ToLower();
})
};
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.