Возможный возврат нулевой ссылки с использованием JsonSerializer.Deserialize ⇐ C#
Возможный возврат нулевой ссылки с использованием JsonSerializer.Deserialize
пытается десериализовать чтение из файла Json и вместо нужных объектов возвращает пустые данные. Я пытаюсь использовать объекты в модальном всплывающем окне для отображения некоторой информации о продукте. Я перечислил текущий код ниже:
Продукт общедоступного класса { общедоступная строка? Идентификатор {получить; набор; } общедоступная строка? Создатель {получить; набор; } [JsonPropertyName("Изображение")] общедоступная строка? Изображение {получить; набор; } общедоступная строка? URL {получить; набор; } общедоступная строка? Название {получить; набор; } общедоступная строка? Описание {получить; набор; } общедоступная строка переопределения ToString() => JsonSerializer.Serialize(this, новые параметры JsonSerializerOptions { PropertyNameCaseInsensitivity = true }); } общедоступный класс ProductsController: ControllerBase { //Здесь мы добавляем сервис продукта в виде файла json общедоступный ProductsController (JsonFileProductService ProductService) { ПродуктСервис = ПродуктСервис; } //разыменование продуктов общественный JsonFileProductService ProductService {get; } //этот метод извлекает продукты из файла JSON //понимаем, что это не оптимальный способ просто использовать для тестирования [HttpGet] public IEnumerable Get() => ProductService.GetProducts(); } общедоступный класс JsonFileProductService { public JsonFileProductService (IWebHostEnvironment webHostEnvironment) { WebHostEnvironment = webHostEnvironment; } общественный IWebHostEnvironment WebHostEnvironment {get; } частная строка JsonFileName => Path.Combine(WebHostEnvironment.WebRootPath, «Данные», «products.json»); общедоступный IEnumerable GetProducts() { использование StreamReader jsonFileReader = File.OpenText(JsonFileName); return JsonSerializer.Deserialize(jsonFileReader.ReadToEnd(), новые параметры JsonSerializerOptions { PropertyNameCaseInsensitivity = true }); } } Вызов GetProducts:
void SelectProduct (строка ProductId) { выбранныйProductId = ProductId; selectedProduct = ProductService.GetProducts().First(x => x.Id == идентификатор продукта); }
Формат Json:
[ { "Идентификатор": "строка", «Создатель»: «имя», "img": "https://somedomain.jpeg", "URL-адрес": "https://domain/", «Название»: «строка слов», «Описание»: «строка слов», «Рейтинги»: [5, 5] }, { "Идентификатор": "строка", «Создатель»: «имя», "img": "https://somedomain.jpeg", "URL-адрес": "https://domain/", «Название»: «строка слов», «Описание»: «строка слов», «Рейтинги»: [5, 5] } ] попробовал добавить PropertyNameCaseInsensitivity = true; все еще возвращает ноль.
пытается десериализовать чтение из файла Json и вместо нужных объектов возвращает пустые данные. Я пытаюсь использовать объекты в модальном всплывающем окне для отображения некоторой информации о продукте. Я перечислил текущий код ниже:
Продукт общедоступного класса { общедоступная строка? Идентификатор {получить; набор; } общедоступная строка? Создатель {получить; набор; } [JsonPropertyName("Изображение")] общедоступная строка? Изображение {получить; набор; } общедоступная строка? URL {получить; набор; } общедоступная строка? Название {получить; набор; } общедоступная строка? Описание {получить; набор; } общедоступная строка переопределения ToString() => JsonSerializer.Serialize(this, новые параметры JsonSerializerOptions { PropertyNameCaseInsensitivity = true }); } общедоступный класс ProductsController: ControllerBase { //Здесь мы добавляем сервис продукта в виде файла json общедоступный ProductsController (JsonFileProductService ProductService) { ПродуктСервис = ПродуктСервис; } //разыменование продуктов общественный JsonFileProductService ProductService {get; } //этот метод извлекает продукты из файла JSON //понимаем, что это не оптимальный способ просто использовать для тестирования [HttpGet] public IEnumerable Get() => ProductService.GetProducts(); } общедоступный класс JsonFileProductService { public JsonFileProductService (IWebHostEnvironment webHostEnvironment) { WebHostEnvironment = webHostEnvironment; } общественный IWebHostEnvironment WebHostEnvironment {get; } частная строка JsonFileName => Path.Combine(WebHostEnvironment.WebRootPath, «Данные», «products.json»); общедоступный IEnumerable GetProducts() { использование StreamReader jsonFileReader = File.OpenText(JsonFileName); return JsonSerializer.Deserialize(jsonFileReader.ReadToEnd(), новые параметры JsonSerializerOptions { PropertyNameCaseInsensitivity = true }); } } Вызов GetProducts:
void SelectProduct (строка ProductId) { выбранныйProductId = ProductId; selectedProduct = ProductService.GetProducts().First(x => x.Id == идентификатор продукта); }
Формат Json:
[ { "Идентификатор": "строка", «Создатель»: «имя», "img": "https://somedomain.jpeg", "URL-адрес": "https://domain/", «Название»: «строка слов», «Описание»: «строка слов», «Рейтинги»: [5, 5] }, { "Идентификатор": "строка", «Создатель»: «имя», "img": "https://somedomain.jpeg", "URL-адрес": "https://domain/", «Название»: «строка слов», «Описание»: «строка слов», «Рейтинги»: [5, 5] } ] попробовал добавить PropertyNameCaseInsensitivity = true; все еще возвращает ноль.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Когда JsonSerializer.Deserialize
(String, JsonSerializerOptions) возвращает значение null?
Anonymous » » в форуме C# - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-