Skip to content

System.Text.Json read-only property deserialization returns default value #42399

@logcorner

Description

@logcorner

JsonSerializer.Deserialize returns null for readonly properties

public class WeatherForecast : Weather
   {
       private WeatherForecast()
       {
       }
       public WeatherForecast(DateTimeOffset date, string summary, int temperatureCelsius) : base(temperatureCelsius)
       {
           Date = date;
           Summary = summary;
       }

       public DateTimeOffset Date { get; }

       public string Summary { get; }
   }

   public class Weather
   {
       protected Weather()
       {
       }

       public Weather(int temperatureCelsius)
       {
           TemperatureCelsius = temperatureCelsius;
       }

       public int TemperatureCelsius { get; }
   }

the following call returns default for all properties

var weatherForecast = new WeatherForecast(DateTime.Now, "Hot", 25);
        string jsonString;
        jsonString = JsonSerializer.Serialize(weatherForecast);

        var DeserializeObject = JsonSerializer.Deserialize<WeatherForecast>(jsonString);

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions