2010-05-28 2 views
0

У меня есть простой класс в ASP.NET MVC, который выглядит следующим образом:Пользовательские JsonSerialization

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, поэтому мне не нужна ссылка на индекс?

Спасибо!

ответ

2

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

+0

Первоначально я использовал словарь, но теперь это становится болью, потому что мне нужно будет постоянно сливать словари, и это кажется проблемой само по себе. Гораздо проще сделать это со списком, но теперь у меня проблема сериализации. – chobo

+0

На самом деле метод response.ToDictionary() - это именно то, что мне нужно. Я просто не совсем понял, что вы имели в виду. – chobo