neuecc / Utf8Json

Definitely Fastest and Zero Allocation JSON Serializer for C#(NET, .NET Core, Unity, Xamarin).
MIT License
2.36k stars 267 forks source link

Deserializing immutable object with SnakeCase resolver is throwing exception #164

Open Dolfik1 opened 5 years ago

Dolfik1 commented 5 years ago

Deserializing immutable object with SnakeCase resolver is throwing exception. Repro code:

public class Person
{
    public readonly int Age;
    public readonly string FirstName;

    public Person(int age, string firstName)
    {
        Age = age;
        FirstName = firstName;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Person p;
        // default
        var json = @"{""Age"":1,""FirstName"": ""Ivan""}";
        p = JsonSerializer.Deserialize<Person>(json, StandardResolver.Default); // OK
        Console.WriteLine($"Age: {p.Age}, FirstName: {p.FirstName}");

        // snake
        var jsonSnake = @"{""age"":1,""first_name"": ""Ivan""}";
        p = JsonSerializer.Deserialize<Person>(jsonSnake, StandardResolver.SnakeCase); // System.InvalidOperationException: 'generated serializer for Person does not support deserialize.'
        Console.WriteLine($"Age: {p.Age}, FirstName: {p.FirstName}");

        Console.ReadKey();
    }
}