powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Автосгенерённый класс содержит enum, и enum не выгружается в json.
25 сообщений из 25, страница 1 из 1
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801717
rigor mortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет,
что-то странное. Сгенерил класс из xsd, в котором есть некоторый набор значений


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    		<xsd:element name="Division" minOccurs="0">
    			<xsd:annotation>
    				<xsd:documentation>Сегмент</xsd:documentation>
    			</xsd:annotation>
    			<xsd:simpleType>
    				<xsd:restriction base="xsd:string">
    					<xsd:enumeration value="Field1"></xsd:enumeration>
    					<xsd:enumeration value="Field2"></xsd:enumeration>
    					<xsd:enumeration value="Field3"></xsd:enumeration>
    				</xsd:restriction>
    			</xsd:simpleType>
    		</xsd:element>



В сгенерённом классе это выгладит как

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        private Division DivisionField;
        
        private bool DivisionFieldSpecified;

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
    public enum Division {
        
        /// <remarks/>
        Field1,
        
        /// <remarks/>
        Field2,
        
        /// <remarks/>
        Field3,
    }



В контроллере asp.net core заполняется класс,

Код: c#
1.
Division = Division.Field1,



и выдаётся ответ по GET. В итоге в полученном json Division'а неn, есть только строка

Код: javascript
1.
"DivisionSpecified": false,



Из-за чего может быть такое? Как сделать чтобы enum отображался в json? Что-то не могу найти ничего дельного в гугле.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigor mortis,
А тип перечислимое разве есть в js? Зачем пересылать то?
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801740
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigor mortisВ контроллере asp.net core заполняется класс,

Код: c#
1.
Division = Division.Field1,

Division в левой части присвоения - это что в данном случае?
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801750
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то должен серилизоваться как число. Если надо как строку, то цеплять аттрибут [JsonConverter(typeof(StringEnumConverter))]
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801752
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rigor mortis,
А тип перечислимое разве есть в js? Зачем пересылать то?

Перечислимое - это то же самое целое (по умолчанию), просто поименованное.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801832
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatPetro123rigor mortis,
А тип перечислимое разве есть в js? Зачем пересылать то?

Перечислимое - это то же самое целое (по умолчанию), просто поименованное.я в курсе. А вопрос то остался. Зачем "как бы целое" передавать например в таблицу? Что показывать?
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801833
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatВообще-то должен серилизоваться как число. Если надо как строку, то цеплять аттрибут [JsonConverter(typeof(StringEnumConverter))]ну вот это другое дело. Конвертировать в простой простой класс с элементарными простыми типами.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801842
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Зачем "как бы целое" передавать например в таблицу? Что показывать?
А может быть его и не собираются показывать, а собираются просто потом передать назад, или использовать как value в лукап-комбобоксе или т.п. Это то же самое, как спросить: "а зачем гуидный id передавать в таблицу?"
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801845
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

В общем-то enum-ы это как бы и не зло, но что-то около зла )) При виде енума в голове должен звенеть звоночек - не следует ли этот енум заменить на что-то полиморфное или просто на несколько инстансов класса, по типу:

Код: c#
1.
2.
3.
4.
5.
6.
class Color {
    private Color() {}

    public readonly Color Red = new Color();
    public readonly Color Green = new Color();
}
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801850
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatПри виде енума в голове должен звенеть звоночекда.
Не случайно же его нет в js в таком виде. Не умерли же они без него.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801851
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Пример перечислимого - 12 месяцев в году.
Вроде понятно что на самом деле передать)))
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801858
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Пример перечислимого - 12 месяцев в году.
Вроде понятно что на самом деле передать)))

Код: c#
1.
Month wtf = (Month)42; // Surprise?



:-)
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801859
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Обычно, где enum, там где-то рядом и switch, а где switch, там уже точно говнокод
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801864
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatа где switch, там уже точно говнокодуносите пациента
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801870
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigor mortis,

"DivisionSpecified": false наводит на мысль о том, что где-то у Вас ошибка. Попробуйте расставить точки останова и отладить код.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801874
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA"DivisionSpecified": false наводит на мысль о том, что где-то у Вас ошибка. Попробуйте расставить точки останова и отладить код.пара полей Division и DivisionSpecified в совокупности с определенными атрибутами создает эдакий Nullable Division с точки зрения xml-сериализатора. JSON-сериализатор тупо игнорит эти атрибуты, поэтому DivisionSpecified со своим значением по умолчанию попадает в выход - это не ошибка в коде, это попытка использовать для json класс, предназначенный для xml
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801875
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigor mortis,

ну и XSD - это язык описания структуры XML документа, а не JSON
так что я бы не ожидал документированного поведения при таком подходе
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801879
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANArigor mortis,

ну и XSD - это язык описания структуры XML документа, а не JSON
так что я бы не ожидал документированного поведения при таком подходеда, но свойство Divison-то должно выгружаться (как строка, насколько я помню). Правда, ТС не привел эту часть класса (где определено свойство), может он решил, что оно не нужно и удалил....
Впрочем, ТС все равно забил топик
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801881
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProskyANA"DivisionSpecified": false наводит на мысль о том, что где-то у Вас ошибка. Попробуйте расставить точки останова и отладить код.пара полей Division и DivisionSpecified в совокупности с определенными атрибутами создает эдакий Nullable Division с точки зрения xml-сериализатора. JSON-сериализатор тупо игнорит эти атрибуты, поэтому DivisionSpecified со своим значением по умолчанию попадает в выход - это не ошибка в коде, это попытка использовать для json класс, предназначенный для xml
я в курсе :)

значение false наводит на мысль, что свойство Division не выставляется таки у сериализуемого объекта
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801884
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или он его удалил, или ещё чего учудил
вообщем моё мнение - ошибка явно у него и ему её искать в отладке
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801886
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANArigor mortis,

ну и XSD - это язык описания структуры XML документа, а не JSON
так что я бы не ожидал документированного поведения при таком подходе

Ну там, как я понял, речь идет об обычном классе, просто сгенеренном из XSD. Сам XSD к JSON, понятно, что никаким боком при этом.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801890
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Profkthatа где switch, там уже точно говнокодуносите пациента
)
fkthatСам XSD к JSON, понятно, что никаким боком при этом.да. И нафига автор тут приплел одно к другому непонятно.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801891
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, если автор задал вопрос и молчит при этом, то часто это говорит о сомнительной архитектуре.
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801898
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatskyANArigor mortis,

ну и XSD - это язык описания структуры XML документа, а не JSON
так что я бы не ожидал документированного поведения при таком подходе

Ну там, как я понял, речь идет об обычном классе, просто сгенеренном из XSD.
Тогда DivisionSpecified должно иметь значение true, а раз false, то где-то явно ошибка :)
...
Рейтинг: 0 / 0
Автосгенерённый класс содержит enum, и enum не выгружается в json.
    #39801900
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А вообще, если автор задал вопрос и молчит при этом, то часто это говорит о сомнительной архитектуре.
По мне так об этом говорит тема автора в разделе "Разработка информационных систем" :)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Автосгенерённый класс содержит enum, и enum не выгружается в json.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]