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

次のようにして動作させました:

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

1 に答える 1

0

どうやらあなたの args["xldata"] には [{ "name": "john", "age": "30" }, { "name": "jane", "age": "31" のような json 文字列が含まれていません。 }] ですが、.net オブジェクト .ToString() によって返されるものです。

JavaScriptSerializer.Deserialize を使用すると、json 表現のみを逆シリアル化できます。

于 2013-06-12T13:20:01.537 に答える