Как сериализовать рекурсивный словарь в С#?C#

Место общения программистов C#
Ответить
Anonymous
 Как сериализовать рекурсивный словарь в С#?

Сообщение Anonymous »

Ниже класса находится рекурсивный словарь (древовидная структура). EntityID — это всего лишь псевдоним строки, доступ к которой осуществляется через HierarchicalRelationshipsMap.EntityID.

Код: Выделить всё

public class HierarchicalRelationshipsMap: Dictionary
{
public class EntityID
{
public static implicit operator EntityID(string value) => new EntityID();
public static implicit operator string(EntityID entityID) => string.Empty;
}
}
Пример экземпляра:

Код: Выделить всё

HierarchicalRelationshipsMap hierarchicalRelationshipsMap = new()
{
{
Guid.NewGuid().ToString(),
new HierarchicalRelationshipsMap
{
{Guid.NewGuid().ToString(), new HierarchicalRelationshipsMap() },
{Guid.NewGuid().ToString(), new HierarchicalRelationshipsMap() }
}
}
};
Если сериализовать его с помощью

Код: Выделить всё

Newtonsoft.Json.JsonConvert.SerializeObject(hierarchicalRelationshipsMap, Newtonsoft.Json.Formatting.Indented));
это даст такой результат:

Код: Выделить всё

{
"MockDataSource.HierarchicalRelationshipsMap+EntityID": {
"MockDataSource.HierarchicalRelationshipsMap+EntityID": {},
"MockDataSource.HierarchicalRelationshipsMap+EntityID": {}
}
}
хотя можно было бы ожидать чего-то подобного:

Код: Выделить всё

{
"2ca15c6b-e706-4f1c-b287-1629ed0bac0a": {
"21333569-4248-49ac-ba0c-d1612a2c42a8": {}
"fc7ad745-8890-4a68-9431-c8de4801470b": {}
}
}
Как это исправить?


Подробнее здесь: https://stackoverflow.com/questions/791 ... onary-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»