/
aprogrammer
/
dotnet-docs
Обзор
Документация
Войти
/
aprogrammer
/
dotnet-docs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
docs/standard/serialization/system-text-json/snippets/source-generation/csharp/SerializeOnlyWithOptions.cs
62 строки
2 KB
Genevieve Warren
Simplify snippet names (#35843)
16 июн 2023, 15:44
Не верифицирован
16 июн 2023, 15:44
3c139ad
Код
Авторство
О чём код?
// <All> using System.Text.Json; using System.Text.Json.Serialization; namespace SerializeOnlyWithOptions { public class WeatherForecast { public DateTime Date { get; set; } public int TemperatureCelsius { get; set; } public string? Summary { get; set; } } // <JsonSourceGenerationOptions> [JsonSourceGenerationOptions( WriteIndented = true, PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase, GenerationMode = JsonSourceGenerationMode.Serialization)] [JsonSerializable(typeof(WeatherForecast))] internal partial class SerializationModeOptionsContext : JsonSerializerContext { } // </JsonSourceGenerationOptions> public class Program { public static void Main() { string jsonString; WeatherForecast weatherForecast = new() { Date = DateTime.Parse("2019-08-01"), TemperatureCelsius = 25, Summary = "Hot" }; // Serialize using TypeInfo<TValue> provided by the context // and options specified by [JsonSourceGenerationOptions]. // <SerializeWithTypeInfo> jsonString = JsonSerializer.Serialize( weatherForecast, SerializationModeOptionsContext.Default.WeatherForecast); // </SerializeWithTypeInfo> Console.WriteLine(jsonString); // output: //{ // "date": "2019-08-01T00:00:00", // "temperatureCelsius": 0, // "summary": "Hot" //} // Serialize using Default context // and options specified by [JsonSourceGenerationOptions]. // <SerializeWithContext> jsonString = JsonSerializer.Serialize( weatherForecast, typeof(WeatherForecast), SerializationModeOptionsContext.Default); // </SerializeWithContext> Console.WriteLine(jsonString); // output: //{ // "date": "2019-08-01T00:00:00", // "temperatureCelsius": 0, // "summary": "Hot" //} } } } // </All>