通过隐藏变量传递复杂的 json 并在 mvc 3 控制器中读取
Posted
技术标签:
【中文标题】通过隐藏变量传递复杂的 json 并在 mvc 3 控制器中读取【英文标题】:Pass complex json via hidden variable and read in mvc 3 controller 【发布时间】:2012-10-08 03:45:14 【问题描述】:我想做以下事情。
-
在隐藏的输入变量中传递复杂的 json 对象
通过表单集合对象获取隐藏变量。
将隐藏的文本值转换为我可以循环访问的动态对象
从中获取数据
所以我认为上面的前两项我可以做到。
-
$("#hiddenVariableID").val(JSON.stringify(data));
在 MVC 控制器中有一个名为 FormCollection 集合的参数。
然后通过以下方式获取值 String data =
collection.Get("hiddenVariableID");
??不知道该怎么做。
我传递的数据是一个对象数组。对象永远不会相同,这就是为什么我需要将结果转换为某种类型的动态对象,我可以循环访问。
我无法执行 ajax 调用来执行此操作,因为我想流式传输隐藏变量中传递的数据。所以必须通过表单提交。
谢谢你, -Tesh
【问题讨论】:
【参考方案1】:此时您可以使用一些 JSON 解析器在字符串和您可以动态访问的 JSON 对象之间进行转换。那里有许多 JSON 解析器,下面的代码显示了如何使用其中两个来完成:javascriptSerializer(.NET 框架的一部分)和JSON.NET(非 MS 库,但 IMO真的很好)。
public static void Test()
string JSON = @"[
'name':'Scooby Doo', 'age':10,
'name':'Shaggy', 'age':18,
'name':'Daphne', 'age':19,
'name':'Fred', 'age':19,
'name':'Velma', 'age':20
]".Replace('\'', '\"');
Console.WriteLine("Using JavaScriptSerializer");
JavaScriptSerializer jss = new JavaScriptSerializer();
object[] o = jss.DeserializeObject(JSON) as object[];
foreach (Dictionary<string, object> person in o)
Console.WriteLine("0 - 1", person["name"], person["age"]);
Console.WriteLine();
Console.WriteLine("Using JSON.NET (Newtonsoft.Json) parser");
JArray ja = JArray.Parse(JSON);
foreach (var person in ja)
Console.WriteLine("0 - 1", person["name"].ToObject<string>(), person["age"].ToObject<int>());
【讨论】:
以上是关于通过隐藏变量传递复杂的 json 并在 mvc 3 控制器中读取的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot 在 Post 方法中传递 Json 数据?我想传递几个变量并在不同的 java 类中使用这些变量
如何使用 JSON.NET 通过 ASP.NET MVC 传递 JSON 日期值? [复制]
FineUI MVC 前端获取表格Json通过Post传递后台