迭代动态对象

时间:2014-08-19 13:42:07

标签: c# asp.net-mvc-4 dynamic

使用mvc我得到这样的值,以避免类声明和路由器更改。

public dynamic Create([FromBody] dynamic form)
{
    var username = form["username"].Value;
    var password = form["password"].Value;
    var firstname = form["firstname"].Value;
...

我喜欢遍历所有值并检查它们是否为null或空。

3 个答案:

答案 0 :(得分:15)

好吧,如果你从参数中得到一个json,你可以将对象转换为字典,对于样本:

var d = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(form);

var username = d["username"];

你也可以在键之间循环:

foreach(var key in d.Keys)
{
   // check if the value is not null or empty.
   if (!string.IsNullOrEmpty(d[key])) 
   {
      // code
   }
}

答案 1 :(得分:4)

这是相当古老的,但我偶然发现了这一点,我想知道为什么没有提出以下内容:

In [77]: np.column_stack(( a, _ ))
Out[77]: 
array([[ 0.76      ,  1.28947368,  1.        ],
       [ 0.68      ,  1.41176471,  2.        ],
       [ 0.68      ,  1.41176471,  2.        ],
       [ 0.68      ,  1.44117647,  3.        ],
       [ 0.66      ,  1.09090909,  4.        ],
       [ 0.66      ,  1.15151515,  5.        ],
       [ 0.66      ,  1.15151515,  5.        ],
       [ 0.66      ,  1.24242424,  6.        ]])

答案 2 :(得分:1)

您可以使用JavaScriptSerializer和动态对象:

JavaScriptSerializer serializer = new JavaScriptSerializer();

dynamic myDynamicObject = serializer.DeserializeObject(json);

例如,如果您想循环遍历myDynamicObject["users"]

foreach (KeyValuePair<string, dynamic> user in myDynamicObject["users"]){
    Console.WriteLine(user.Key+": "+user.Value["username"]);
    Console.WriteLine(user.Key+": "+user.Value["email"]);
}