2013-06-11 5 views
1

Следующий код:Как преобразовать следующий список в словарь?

var data = _context.People.ToList(); //_context is my DataContext. 

выдает результат:

[{ "name": "john", "age": "30" }, { "name": "jane", "age": "31" }] 

, но я хочу, чтобы быть словарем, так что-то вроде:

{ "xldata" : [{ "name": "john", "age": "30" }, { "name": "jane", "age": "31" }] } 

Я получил его на работу :

, но значение моего словаря является System.Object[] вместо people

Целью этого является экспорт данных, поэтому, когда я доберусь до этой линии:

var people = jss.Deserialize<List<People>>(args["xldata"]); 

args["xldata"] is `System.Object[]` and it says `Invalid JSON primitive`. 

Вот скрипт должен экспортировать данные, чтобы преуспеть:

$.post(urlContent + exportHandlerPath, Json, function(data) { 
     var viewData = {}; 
     viewData.xldata = JSON.stringify(data); 
     html = ich.excelExportTemplate(viewData); 
     $excelExportContainer.html(html); 
     var input = $excelExportContainer.find('input#excelExportHiddenField'); 
     input.val(viewData.xldata); 

     var $excelForm = $('#excelExportForm'); 

     $excelForm.attr('action', '/People/ExportToExcel/'); 
     $excelForm.submit(); 
    } 
+3

Вы хотите, чтобы «имя» было ключевым и «возрастным» значением? – MichelleJS

+0

Какие свойства вы хотите использовать для ключей и значений? – evanmcdonnal

+2

Я смущен - ваш «ключ» - это массив «Людей»? –

ответ

0

Видимо ваши арг [ "xldata"] не содержит JSon строку типа [{ "имя": "сортир", "возраст": "30"}, { "имя": «jane», «age»: «31»}], но что-то возвращается объектом .net .ToString().

С JavaScriptSerializer.Deserialize вы можете только deserialize json represenations.