0

我想做以下事情。

  1. 在隐藏的输入变量中传递一个复杂的 json 对象
  2. 通过表单集合对象获取该隐藏变量。
  3. 将隐藏的文本值转换为动态对象,我可以循环通过该对象从中获取数据

所以我认为上面的前两项我可以做到。

  1. $("#hiddenVariableID").val(JSON.stringify(data));
  2. 在 MVC 控制器中有一个名为 FormCollection 集合的参数。然后通过以下方式获取值 String data = collection.Get("hiddenVariableID");
  3. ?? 不知道该怎么做。

我传递的数据是一个对象数组。对象永远不会相同,这就是为什么我需要将结果转换为可以循环遍历的某种类型的动态对象。

我无法执行 ajax 调用来执行此操作,因为我想流式传输隐藏变量中传递的数据。所以它必须通过表单提交。

谢谢你,-Tesh

4

1 回答 1

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>());
    }
}
于 2012-10-17T19:57:06.740 回答