2015-12-28 5 views
2

Я пытался десериализовать возврат response.Content Строка, но напрасно. Действие WebApi возвращает измененный код modelState с дополнительными пользовательскими ошибками.RestSharp: Deserialize json string

На стороне MVC, я попытался следующие методы никто не работал:

JsonDeserializer deserial = new JsonDeserializer(); 
    var json = deserial.Deserialize<dynamic>(response); 

И

var json = JsonConvert.DeserializeObject<WebApiReturnModel>(response.Content); 

    public class WebApiReturnModel 
    { 
     public string Message { get; set; } 

     public ModelStateDictionary ModelState { get; set; } 
    } 

Пример response.Content вернулся:

{ 
    "Message":"The request is invalid.", 
    "ModelState":{ 
     "": ["Name Something is already taken.","Email '[email protected]' is already taken."] 
      } 
} 

Как получить эту работу ?

+0

Как разработан «ModelStateDictionary»? –

+0

@Amit Это стандартная реализация .Net –

ответ

1

Я попытался использовать dynamic подход и для меня это работает:

var input = @"{ 
       ""Message"":""The request is invalid."", 
       ""ModelState"":{ 
          """": [""Name Something is already taken."",""Email '[email protected]' is already taken.""] 
       } 
      }"; 

// This uses JSON.Net, as your second snippet of code. 
var json = JsonConvert.DeserializeObject<dynamic>(input); 

// This will get: The request is invalid. 
var message = json["Message"].Value; 

foreach (var m in json["ModelState"][""]) 
{ 
    // This will get the messages in the ModelState. 
    var errorMessage = m.Value; 
} 

Если вы не знаете названия клавиш в ModelState, вы можете использовать вложенный цикл:

foreach (var m in json["ModelState"]) 
{ 
    foreach (var detail in m.Value) 
    { 
     // This will get the messages in the ModelState. 
     var errorMessage = detail.Value; 
    } 
} 
+0

Единственная проблема с 'json [" ModelState "] [" "]' заключается в том, что ключ должен быть известен, прежде чем его можно будет использовать. Там должен быть лучший путь. –

Смежные вопросы