Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] problema na serialização

Andei fazendo as atividades da aula 2 e me deparo com este erro : "Reflection-based serialization has been disabled for this application." e não sei como resolver isso, aqui o codigo que esse problema se refere:

Classe do carro

using System.Text.Json.Serialization;
namespace NitroBeets.Modelos;

class Carro
{
    [JsonPropertyName("marca")]
    public string? Marca { get; set; }

    [JsonPropertyName("modelo")]
    public string? Modelo { get; set; }

    [JsonPropertyName("ano")]
    public int Ano { get; set; }

    [JsonPropertyName("motor")]
    public string? Motor { get; set; }

    [JsonPropertyName("tipo")]
    public string? Tipo { get; set; }

    public string FichaTecnica => $"\n\nModelo: {Modelo} ({Ano})\nMotor :{Motor} - Tipo: {Tipo}\n\n";
}

Program.cs

using NitroBeets.Modelos;
using System.Text.Json;

using (HttpClient client = new())
{
    try
    {
        string resposta = await client.GetStringAsync("https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Carros.json")!;
        Console.WriteLine(resposta);
        var filmes = JsonSerializer.Deserialize<List<Carro>>(resposta)!;
        foreach (var filme in filmes)
        {
            Console.WriteLine(filme.FichaTecnica);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Temos um problema: {ex.Message}");
    }
}
2 respostas
solução!

Olá, Luiz! Parece que você está tendo um problema com a serialização JSON no .NET. O erro que você está vendo, "Reflection-based serialization has been disabled for this application", geralmente ocorre quando a serialização por reflexão foi desabilitada, o que é uma configuração de segurança comum em alguns ambientes.

No entanto, a serialização por reflexão é necessária para o funcionamento do JsonSerializer, que você está usando para desserializar a resposta JSON em uma lista de objetos Carro.

Uma possível solução para isso é habilitar a serialização por reflexão em seu aplicativo. Para fazer isso, você pode adicionar o seguinte trecho de código ao seu arquivo de configuração do aplicativo (.csproj):

<ItemGroup>
  <RuntimeHostConfigurationOption Include="System.Text.Json.Serialization.JsonSerializerOptions.EnableUnsafeBinaryFormatterSerialization" Value="true" />
</ItemGroup>

Este trecho de código habilita a serialização baseada em reflexão, que é necessária para o JsonSerializer.

Depois de adicionar isso, tente executar seu código novamente. Se o problema persistir, pode ser necessário verificar se há outros problemas de configuração que possam estar causando este erro.

Espero ter ajudado e bons estudos!

muito obrigado :)