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");
}
}
public ActionResult ExportData([ModelBinder(typeof(JsonBinder))]object data, [ModelBinder(typeof(JsonBinder))]List<Object> columns)
{
//啥都没写
return Json(new { success = true });
}
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;
}
}