System.Text.Json: десериализация JSON с автоматическим приведением ⇐ C#
System.Text.Json: десериализация JSON с автоматическим приведением
Используя новый System.Text.Json JsonSerializer .Net Core 3, как автоматически преобразовать типы (например, int в строку и строку в int)? Например, это вызывает исключение, поскольку id в JSON является числовым, а Product.Id в C# ожидает строку:
публичный класс HomeController: Контроллер { публичный индекс IActionResult() { var json = @"{""id"":1,""name"":""Foo""}"; var o = JsonSerializer.Deserialize(json, новый JsonSerializerOptions { PropertyNameCaseInsensitivity = true, }); вернуть просмотр(); } } Продукт общественного класса { публичный идентификатор строки {get; набор; } общедоступная строка Имя {get; набор; } } Json.Net компании Newtonsoft прекрасно справился с этой задачей. Не имело значения, передавали ли вы числовое значение, в то время как C# ожидал строку (или наоборот), все было десериализовано, как и ожидалось. Как вы справитесь с этим с помощью System.Text.Json, если у вас нет контроля над форматом типа, передаваемым как JSON?
Используя новый System.Text.Json JsonSerializer .Net Core 3, как автоматически преобразовать типы (например, int в строку и строку в int)? Например, это вызывает исключение, поскольку id в JSON является числовым, а Product.Id в C# ожидает строку:
публичный класс HomeController: Контроллер { публичный индекс IActionResult() { var json = @"{""id"":1,""name"":""Foo""}"; var o = JsonSerializer.Deserialize(json, новый JsonSerializerOptions { PropertyNameCaseInsensitivity = true, }); вернуть просмотр(); } } Продукт общественного класса { публичный идентификатор строки {get; набор; } общедоступная строка Имя {get; набор; } } Json.Net компании Newtonsoft прекрасно справился с этой задачей. Не имело значения, передавали ли вы числовое значение, в то время как C# ожидал строку (или наоборот), все было десериализовано, как и ожидалось. Как вы справитесь с этим с помощью System.Text.Json, если у вас нет контроля над форматом типа, передаваемым как JSON?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение