簡體   English   中英

展平復雜的json對象以進行mvc綁定

[英]Flattening a complex json object for mvc binding

我的控制器正在以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類,這是我理解的原因,因為Modelbinder期望這樣做:{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;
}

就我而言,我們通過將其他對象傳遞給操作網址來解決了該問題。

public ActionResult方法(客戶客戶,[Bind(Prefix =“ Budget”)]預算預算)

為了做到這一點,您必須按照以下方式展平json數據(在將其發送到控制器之前):

如何使用JSON將復雜類型傳遞給ASP.NET MVC控制器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM