我有一个复杂的JSON对象,该对象没有任何问题即可发送到View(如下所示),但是当通过AJAX调用将数据序列化回.NET对象时,我无法弄清楚如何将该数据序列化回.NET对象。各个部分的详细信息如下。
var ObjectA = {
"Name": 1,
"Starting": new Date(1221644506800),
"Timeline": [
{
"StartTime": new Date(1221644506800),
"GoesFor": 200
}
,
{
"StartTime": new Date(1221644506800),
"GoesFor": 100
}
]
};
我不确定如何将该对象传递给Controller方法,下面有此方法,其中Timelines对象使用Properties镜像上述JS对象。
public JsonResult Save(Timelines person)
我正在使用的jQuery是:
var encoded = $.toJSON(SessionSchedule);
$.ajax({
url: "/Timeline/Save",
type: "POST",
dataType: 'json',
data: encoded,
contentType: "application/json; charset=utf-8",
beforeSend: function() { $("#saveStatus").html("Saving").show(); },
success: function(result) {
alert(result.Result);
$("#saveStatus").html(result.Result).show();
}
});
我还看到了使用’JsonFilter’手动反序列化JSON的参考,但是我想知道是否有一种方法可以通过ASP.NET
MVC来实现。或以这种方式传递数据的最佳实践是什么?
编辑:
随着MVC 3的到来,不再需要这种方法,因为它将自动处理-http:
//weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3
-preview-1.aspx
您可以使用以下ObjectFilter:
public class ObjectFilter : ActionFilterAttribute {
public string Param { get; set; }
public Type RootType { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if ((filterContext.HttpContext.Request.ContentType ?? string.Empty).Contains("application/json")) {
object o =
new DataContractJsonSerializer(RootType).ReadObject(filterContext.HttpContext.Request.InputStream);
filterContext.ActionParameters[Param] = o;
}
}
}
然后可以将其应用于您的控制器方法,如下所示:
[ObjectFilter(Param = "postdata", RootType = typeof(ObjectToSerializeTo))]
public JsonResult ControllerMethod(ObjectToSerializeTo postdata) { ... }
因此,基本上,如果帖子的内容类型是“ application / json”,则它将生效,并将值映射到您指定的类型的对象。
问题内容: 我正在使用SpringMVC,我正在将数据从Ajax传递到控制器,但是我在控制器中得到了空值,请检查下面的代码 MyControllerCode 任何人都可以帮助我 问题答案: 嘿享受下面的代码。 Javascript AJAX调用 弹簧控制器代码 以下搜索类如下 该类的优点是,将来可以根据需要向该类添加更多变量。 例如。 如果要实现排序功能。
我已经查看了各种答案,但它们并没有解决我的问题。我有一个非常具体的客户需求,我无法使用请求的主体。 我已经检查了这些帖子: 尝试使用Spring Boot REST从POST读取JSON字符串 使用Jackson JSON在Spring MVC中解析JSON 在Rest web方法中传递JSON对象 注意:我确实对URI进行了编码。 我得到各种错误,但非法的超文本标记语言字符是一个。要求很简单:
问题内容: 我有以下任意JSON对象(字段名称可能会更改)。 -- 我知道我可以像定义具有相同字段名的JSON对象那样定义类,但是我希望控制器接受具有不同字段名的任意JSON对象。 问题答案: 如果您想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它的工作原理很吸引人。 该解决方案的真正好处是,您不需要为每个参数组合定义一个新类,并且除此之外,您可以轻松地将对象转换为其原始类型。 更
问题内容: 我有以下内容,但它不起作用,我在stackoverflow上的某个地方读到了它的工作原理,但我似乎无法使其工作..它出错了……我在做错什么吗? 如果我确实传递了这样的数据-它可以工作-所以我知道我的服务正在工作 问题答案: 我相信代码将在对象上调用.value或.toString(),然后通过网络传递。您想传递JSON。 因此,包括JSON JavaScript库 http://www
问题内容: 我想将我域的任意对象(例如Person)作为参数传递给.jrxml。 在.jrxml上执行以下操作: 这样的事情可能吗?在哪里可以找到更复杂的教程,这些教程不仅显示传递java.lang.String的内容,还显示更多的内容? 谢谢 问题答案: 是的,您可以传递任何Java对象,但应确保将其导入JRXML。 在jasperReport标记内。您可以使用标记,例如: 但是,您可以使用对象
问题内容: 我正在尝试为Android创建一个应用,并且遵循本教程http://developer.android.com/training/basics/firstapp/starting- activity.html 有一部分 然后我按照本教程操作,一切正常,直到我删除参数 我的问题就是为什么每次删除它时,功能就是: 然后我运行该应用程序,它被强制关闭。 谁能启发我?谢谢 问题答案: 方法(通