2013-03-21 88 views
0

我張貼JSON對象到一個控制器動作:C#MVC 4 JSON請求

  $.ajax({ 
       url: "/path/to/action", 
       type: "POST", 
       dataType: "json", 
       data: { 
         name: "John Doe", 
         phone: "2323454543", 
         skills: { 
          code: "php", 
          design: "photoshop" 
          } 
         } 
      }); 

我怎麼能這個數據映射到某種鍵值對對象的?在PHP中,這些被映射到一個關聯數組無形。我希望能夠像這樣訪問屬性:

SomeDynamicType data = ...//something here to prepare json data 
string codeSkills = data.skills.code; //codeSkills should = "php" 

我不感興趣的模型綁定,因爲這些值不符合一個模型 - 他們是任意的。

+0

http://stackoverflow.com/questions/6620165/how-to-parse-json-in-c – 2013-03-21 06:19:27

回答

0

在您的通話阿賈克斯的Json字符串化:

data: { 
       json: 
        JSON.stringify({ 
         name: "John Doe", 
         phone: "2323454543", 
         skills: { 
          code: "php", 
          design: "photoshop" 
         } 
        }) 
      } 

和訪問你在你的控制器是如何想的屬性:

 [HttpPost] 
     public JsonResult Action(string json) 
     { 
      dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json); 
      string codeSkills = data.skills.code; 
... 

codeSkills是 「PHP」串。

Newtonsoft JSON庫是因爲.NET 4中可用,如果我記得正確的。

0

嘗試使用JSON.NET,這個庫解析JSON成一個類似於字典的結構。它的用法如下:

JObject rss = JObject.Parse(json); 
string codeSkills = (string)rss["skills"]["code"];