Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
108 / 52 / 15
Регистрация: 09.06.2021
Сообщений: 480
1

Ошибка десериализации

02.03.2022, 01:57. Показов 645. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему при такой десериализации все поля класса равны null?
C#
1
2
    string s = "{\"BTC_USD\":{\"min_quantity\":\"0.00002\",\"max_quantity\":\"1000\"},\"BTC_EUR\":{\"min_quantity\":\"0.00003\",\"max_quantity\":\"1500\"},\"BTC_GBP\":{\"min_quantity\":\"0.00002\",\"max_quantity\":\"1000\"}}";
    var result = JsonSerializer.Deserialize<Dictionary<string, PairSettings>>(s);
C#
1
2
3
4
5
6
public class PairSettings
{
    public string min_quantity;
    public string max_quantity;
    public string min_price;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2022, 01:57
Ответы с готовыми решениями:

Ошибка десериализации
Добрый день! Есть синглтон-класс Settings, обладающий свойством Lang, при установке значения...

Ошибка сериализации/десериализации
Подскажите что не так? private void button3_Click(object sender, EventArgs e) { ...

Ошибка десериализации JSON
Добрый день! Столкнулся с ошибкой разбора json Классы генерировал сервисом...

Ошибка при десериализации
Пробую считать XML документ. в try catch выдаёт ошибку - There is an Error in XML document (2,2)...

Ошибка при десериализации
Привожу код сериализации и отправки объекта: public void SendRezult(object rezult) { ...

4
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
02.03.2022, 02:10 2
Лучший ответ Сообщение было отмечено Fylhtq05 как решение

Решение

Fylhtq05, сделайте поля свойствами:
C#
1
2
3
4
5
6
public class PairSettings
{
    public string min_quantity { get; init; }
    public string max_quantity { get; init; }
    public string min_price { get; init; }
}

Как вариант, можете при десериализации указывать, чтобы поля тоже записывались:
C#
1
2
3
4
5
var serializerOptions = new JsonSerializerOptions()
{
    IncludeFields = true
};
var result = JsonSerializer.Deserialize<Dictionary<string, PairSettings>>(s, serializerOptions);
1
108 / 52 / 15
Регистрация: 09.06.2021
Сообщений: 480
02.03.2022, 02:26  [ТС] 3
Спасибо, помогло. Это требование десериализатора от Майкрософт? В Newtonsoft часто писал поля и нормально все десериализовалось.
0
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
02.03.2022, 02:44 4
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Это требование десериализатора от Майкрософт?
Ну я бы это требованием не назвал — просто поведение по умолчанию.
Использование открытых полей в .NET не приветствуется, потому видать решили сделать так.
0
108 / 52 / 15
Регистрация: 09.06.2021
Сообщений: 480
02.03.2022, 17:20  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Использование открытых полей в .NET не приветствуется, потому видать решили сделать так.
Я правильно понимаю, что поля плохо только если они в библиотеке для стороннего пользования? А в своей программе любое поле, в случае надобности, превратить в свойство это секундное дело (особенно, если поле не в dll и потому не нужна перекомпиляция) и потому никаких отрицательных последствий быть не может (только плюсы, читал что скорость доступа к свойству в 1.5 раза меньше, чем к полю)?
0
02.03.2022, 17:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2022, 17:20
Помогаю со студенческими работами здесь

Ошибка при десериализации
Здравствуйте, уважаемые форумчане! Подскажите пожалуйста. Я написал класс который сериализует и...

Ошибка при десериализации объекта
&lt;?xml version=&quot;1.0&quot;?&gt; &lt;Command xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;...

Ошибка при десериализации листа
Всем привет! Народ такая проблема, хз вообще не понимаю, что происходит.. помогите разобраться. ...

Постоянная ошибка при десериализации
Пишу свою игрушку. Сделал загрузку через десериализацию класса из xml. Вот код: public Hero...

Ошибка в XML файле при десериализации
когда пытюсь десериализовать файл , то выдаёт ошибку - There is an error in XML document (8,5)...

При десериализации JSON из файла происходит ошибка
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru