• Лови промокод з яким знижка 50 грн - promo50grn

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

Статус: Offline
Реєстрація: 10.06.2006
Повідом.: 3056
.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;}
}
 
стандартный датаконтрактжсонсериалайзер этого не сможет, у тебя есть несколько выходов:
1) расписать все варианты классов, если их конечное число
2) использовать dynamic
3) написать свой сериализатор
4) формировать жсон с фиксированным именем и после сериализации заменять имя на динамическое

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

а вообще нафиг такое надо? динамический контракт это как-то сильно новаторски
 
Кажется
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
что нужно
 
Пробовал все варианты (в т.ч. предложенные, но толком ничего не получилось). всё решилось заменой дотнетовского сериалайзера на newtonsoft.json.
в общем-то, код менять не пришлось, но модель теперь выглядит как Dictionary<string, MyModel>
 
Назад
Зверху Знизу