扁平化复杂的 json 对象以进行 mvc 绑定

2023-12-24

我的控制器以 json 格式将对象图返回到视图,如下所示

return Json(customer);

在视图上我的 json 对象看起来像这样

{
    Name: 'Joe',
    Budget: { Amount: 500, Spend: 100 }
}

它正确映射到我的客户对象:

public class Customer 
{
    public string Name {get;set;}
    public Budget Budget{get;set;} 
}

public class Budget  
{
    public decimal Amount{get;set;}    
    public decimal Spend{get;set;} 
}

我想使用以下签名将相同的 json 对象传递回控制器上的另一个方法:

public ActionResult Method(Customer customer)

当我执行此操作时,会填充该客户的姓名,但不会填充 Budget 类,我明白为什么,因为模型绑定程序期望这样:{Name:'Joe','Budget.Amount':500,'Budget.Spend': 100}

所以我必须选择: 1.我可以以它想要的格式返回json对象,但我不知道怎么做,因为你不能这样做:

return Json(new { Budget.Amount= 500})
  1. 我可以在客户端压平 json 对象。有插件或方法可以做到这一点吗?

这是一个将对象转换为平面哈希的函数

function flatten(json){
    var nj = {},
        walk = function(j){
            var jp;
            for(var prop in j){
                jp = j[prop];
                if(jp.toString() === "[object Object]"){
                    walk(jp);
                }else{
                    nj[prop] = jp;
                }
            }
        };
    walk(json);
    return nj;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扁平化复杂的 json 对象以进行 mvc 绑定 的相关文章

随机推荐