日期:2014-05-17  浏览次数:20568 次

string类型的json数据转换成object后,如何操作才能提取需要的数据呢?
本帖最后由 matrixkey 于 2013-02-05 23:00:55 编辑
我在做一个从easyui的datagrid中导出“datagrid里的数据”的功能。
把datagird的data和columns属性以json格式由js传入控制器,如下。

function TestExport() {
        if (datagrid_data.total == 0) {
            $.messager.alert('提示', "查询结果区域没有数据可导出", 'info');
        } else {
            var columns = $('#dg').datagrid("options").columns;
            //alert(JSON.stringify(columns));
            //alert(JSON.stringify(datagrid_data));
            $.post("/Export/ExportData", { data: JSON.stringify(datagrid_data), columns: JSON.stringify(columns) }, function (result) {
                if (result.success) {
                    alert(1);
                } else {
                    $.messager.alert('提示', result.msg, 'error');
                }
            }, "json");
        }
    }


控制器中的ExportData动作如下:
public ActionResult ExportData([ModelBinder(typeof(JsonBinder))]object data, [ModelBinder(typeof(JsonBinder))]List<Object> columns)
        {
            //啥都没写
            return Json(new { success = true });
        }


其中,[ModelBinder(typeof(JsonBinder))]是对传入的string格式的json数据进行反序列化,具体代码如下:
public class JsonBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            //从请求中获取提交的参数数据 
            var json = controllerContext.HttpContext.Request.Form[bindingContext.ModelName] as string;
            //提交参数是对象 
            if (json.StartsWith("{") && json.EndsWith("}"))
            {
                Dictionary<string, object> JsonObj = new Dictionary<string, object>();