如何将以下列表转换为字典?

时间:2013-06-11 17:26:51

标签: c# json linq .net-3.5

以下代码:

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" }] }

我通过以下方式开始工作:

Dictionary<string,List<People>> vals = new Dictionary<string, List<People>>();
        vals.Add("xldata", people);

但是,我的字典值是System.Object[]而不是people

这样做的目的是导出数据,所以当我到达这一行时:

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

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

这是脚本应该将数据导出到excel:

$.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();
    }

1 个答案:

答案 0 :(得分:0)

显然你的args [“xldata”]不包含像[{“name”:“john”,“age”:“30”},{“name”:“jane”,“age”这样的json字符串: “31”}],但由.net对象返回的东西.ToString()。

使用JavaScriptSerializer.Deserialize,您只能反序列化json表示。