Можно ли использовать JSON словарь .NET, если ключ является нестроковым объектом? - PullRequest
8 голосов
/ 07 июля 2011

Я хотел бы иметь действие контроллера GET, которое возвращает JSON-сериализованный словарь. Ключ к словарю - это простой класс с двумя примитивами в качестве свойств - назовите его ClassOne. Тем не менее, я получаю следующую ошибку при попытке JSON словарь:

System.Collections.Generic.Dictionary`2[[ClassOne],[ClassTwo]]' is not supported for serialization/deserialization of a dictionary, keys must be strings or objects.

Фраза «ключи должны быть строками или объектами» подразумевает, что можно сериализовать словарь, в котором ключами являются объекты. Однако я не могу найти способ сделать это. Какие у меня варианты в этой ситуации?

1 Ответ

7 голосов
/ 07 июля 2011

Ну нет. Словарь из .net будет сериализован в хеш в Javascript. Хеш может содержать только строки в качестве ключей, поэтому вы не сможете сериализовать нестроковый ключ. Вы можете просто преобразовать свой словарь в сериализуемый, например:

myDictionary.ToDictionary(k => k.Key.Prop1 + "|" + k.Key.Prop2, v => v.Value);

Возможно, чище было бы дать ClassOne переопределение ToString и просто вызвать k.Key.ToString() в коде выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...