Пользовательская JsonSerialization - PullRequest
0 голосов
/ 29 мая 2010

У меня есть простой класс в asp.net mvc, который выглядит так:

 public class JsonResponseItem
{
    public string Key { get; set; }
    public string Value { get; set; }

    public JsonResponseItem(string key, string value)
    {
        Key = key;
        Value = value;
    }
}

В моих контроллерах я создаю список этого типа

    List<JsonResponseItem> response = new List<JsonResponseItem>();

так что я могу легко управлять и добавить ответ Json. С объектом словаря это сделать довольно сложно.

Когда я возвращаю объект json

 return Json(response);

Он десериализует его, поэтому я должен сначала сослаться на все по индексу из-за списка. Поэтому, если бы у меня было свойство с именем «IsValid», мне бы пришлось ссылаться на него как на «IsValid [0]». У меня слишком много JavaScript-кода, чтобы внести эти изменения.

Как я могу десериализовать класс JsonResponseItem, чтобы мне там не нужна ссылка на индекс?

Спасибо!

1 Ответ

2 голосов
/ 29 мая 2010

A Dictionary<string, string> будет сериализован в тот Json, который вы запрашиваете. Если вы не хотите предоставлять словарь напрямую, поместите его в другой класс или используйте Json(response.ToDictionary(item => item.Key).

...