2013-03-21 4 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 –

ответ

0

В вашем .ajax вызов stringify 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"]; 
Смежные вопросы