Змінюй хід війни! Допомагай ЗСУ!

.Net, динамическое имя элемента при JSON-сериализации

🟡 12:14 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
Статус: Offline
Реєстрація: 10.06.2006
Повідом.: 3031
  • 🟡 12:14 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #1
.Net, динамическое имя элемента при JSON-сериализации

Всем привет, есть такой JSON:
{"room_types" :
{ "Test Room" :
{
"url" : "
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
",
"desc" : "sdfsadfsdfsfdfs"
}}}

У меня есть класс, который нужно сериализовать в данный JSON.
У каждого проперти класса есть аттрибут DataMember(Name="...").
Проблема в том, что "Test Room" - динамическое значение, и может быть любым, и я хз, как его описать в классе. Фактически, нужно программно менять имя DataMember аттрибута.

public class Response{
[DataMember(Name="room_types")]
public List<RoomType> RoomTypes{get;set;}
}

public class RoomType{
[DataMember(Name="ДИНАМИЧЕСКОЕ ЗНАЧЕНИЕ")]
public RoomTypeDescription {get;set;}
}

public class RoomTypeDescription {
[DataMember(Name="url")]
public string Url {get;set;}
[DataMember(Name="desc")]
public string Description {get;set;}
}
 
  • 🟡 12:14 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #2
стандартный датаконтрактжсонсериалайзер этого не сможет, у тебя есть несколько выходов:
1) расписать все варианты классов, если их конечное число
2) использовать dynamic
3) написать свой сериализатор
4) формировать жсон с фиксированным именем и после сериализации заменять имя на динамическое

если это вцф можно поколдовать с интерфейсом, который сохраняет данные, которые идут сверх контракта, но не уверен что он тут уместен

а вообще нафиг такое надо? динамический контракт это как-то сильно новаторски
 
  • 🟡 12:14 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #3
Кажется
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
что нужно
 
  • 🟡 12:14 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #4
Пробовал все варианты (в т.ч. предложенные, но толком ничего не получилось). всё решилось заменой дотнетовского сериалайзера на newtonsoft.json.
в общем-то, код менять не пришлось, но модель теперь выглядит как Dictionary<string, MyModel>
 
Назад
Зверху Знизу