2014-04-11 130 views
-1

我對我的Web API有一個HttpPost請求並將數據保存到我的數據庫。問題是JSON數據不是一個靜態的格式,例如:將JSON綁定到Model C#

{ 
"35":{ 
"FormId":"4", 
"DateSubmitted":"2014-04-03 10:45:05", 
"UserIp":"127.0.0.1", 
"Username":"", 
"UserId":"0", 
"Lang":"en-GB", 
"confirmed":"Yes" 
}, 
"36":{ 
"FormId":"4", 
"DateSubmitted":"2014-04-04 02:18:52", 
"UserIp":"127.0.0.1", 
"Username":"", 
"UserId":"0", 
"Lang":"en-GB", 
"confirmed":"Yes" 
} 
} 

35和36在這裏可以是任意的號碼,我不知道如何把它綁定到一個模型。 誰能告訴我一個方法:(? 由於提前

+0

你有過JSON是如何格式化控制它看起來像你的對象數組會更多,而不是?單獨的命名對象是否正確? – kmacdonald

+0

是的,它是解析爲JSON的對象數組。我無法控制這一點。請求從另一個網站中的ajax請求發佈 – user3521992

+0

您可以擁有包含數組索引和類對象的包裝模型類。然後你循環這個包裝模型來保存實際的數據,即FormId等。 –

回答

1

這裏是如何實現什麼,我想你會使用JSON.Net和動態關鍵字一個簡單的例子,我剝出了簡單的一些屬性緣故:

[HttpPost] 
public void POST(string text) 
{ 
    dynamic result = JsonConvert.DeserializeObject(text); 
    foreach (var res in result) 
    { 
     var ele = new Test(); 
     ele.ArrayId = int.Parse(res.Name); 
     dynamic value = res.Value; 
     ele.FormId = int.Parse(value.FormId.Value); 
     ele.Ip = value.UserIp.Value; 
     //etc. 
    } 
} 

和模型類與它一起去:

public class Test 
{ 
    public int ArrayId { get; set; } 
    public int FormId { get; set; } 
    public string Ip { get; set; } 
} 
+0

如果我沒有錯誤的Web API使用JSON.NET默認情況下。那麼如何從API操作中獲取該「var text」值?對不起,但我是全新的Web API:D – user3521992

+0

沒問題。我想你可以改變你的POST控制器的參數類型爲字符串,你會得到原始的JSON值。我會嘗試編輯我的答案以包含詳細信息。 – kmacdonald

+0

感謝它的工作。我得到json原始值並使用JSON.NET對其進行反序列化,然後綁定到我的模型:D。 – user3521992