首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

string类型的json数据转换成object后,怎么操作才能提取需要的数据呢

2013-02-19 
string类型的json数据转换成object后,如何操作才能提取需要的数据呢?本帖最后由 matrixkey 于 2013-02-05

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>();
                JObject jsonBody = JObject.Parse(json);


                JsonSerializer js = new JsonSerializer();
                object obj = js.Deserialize(jsonBody.CreateReader());
                return obj;
            }
            //提交参数是数组 
            if (json.StartsWith("[") && json.EndsWith("]"))
            {
                JArray jsonRsp = JArray.Parse(json);
                List<object> list = new List<object>();
                if (jsonRsp != null)
                {
                    for (int i = 0; i < jsonRsp.Count; i++)
                    {
                        JsonSerializer js = new JsonSerializer();
                        object obj = js.Deserialize(jsonRsp[i].CreateReader());
                        list.Add(obj);
                    }
                }
                return list;
            }
            return null;
        }
    }



这个类用到了Newtonsoft.Json这个dll。

我的问题是,把data反序列化后,对象有了,内容如图
string类型的json数据转换成object后,怎么操作才能提取需要的数据呢

可我怎么去得到total,以及每个row里的各种属性的值呢?

同样的问题,把colunms反序列化后,list<>也有了,如图
string类型的json数据转换成object后,怎么操作才能提取需要的数据呢

可我怎么去得到每个field的值呢?

只有22分了,希望可以有人帮忙~ json object datagrid
[解决办法]
这个格式的数据最好用Newtonsoft.Json反序列化成DataTable,然后操作就DataTable就简单了吧,呵呵

热点排行