2016-07-25 6 views
0

クライアントがWeb APIメソッドへの要求を取得し、問題は、私は、このオブジェクトをdesirializeカントである応答としてオブジェクトを取得作るウェブAPIからデシリアライズのカスタムオブジェクトは、Web APIにGETリクエストを行う..

クライアントメソッドを返さ

HttpClient client = new HttpClient(); 
       client.BaseAddress = new Uri("http://localhost:57752"); 
       HttpResponseMessage response = client.GetAsync("api/Auth/Login/" + user.Username + "/" + user.Password).Result; 
       JsonResult result = null; 
       if (response.IsSuccessStatusCode) 
       { 
        result = response.Content.ReadAsAsync<JsonResult>().Result; 
        JavaScriptSerializer json_serializer = new JavaScriptSerializer(); 
        User validUser = json_serializer.Deserialize<User>(result.Data.ToString());//Throws Exp. 
       } 

私は単にValidUserというのAPIから返された、このオブジェクトのインスタンスを入れたい...

エラーメッセージ:

は 「MongoDB.Bson.ObjectId」

ここ

あるモデルを入力するタイプ「可能System.String」のオブジェクトを変換できません:あなたはにデシリアライズするためにどのようなデシリアライザを言っていない

public abstract class EntityBase 
{ 
    [BsonId] 
    public ObjectId Id { get; set; } 
} 

public class User : EntityBase 
    { 
     //public string _id { get; set; } 
     [Required] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 5)] 
     [DataType(DataType.Text)] 
     [Display(Name = "Username")] 
     public string Username { get; set; } 

     [Required] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
     [DataType(DataType.Password)] 
     [Display(Name = "Password")] 
     public string Password { get; set; } 

     public void EncryptPassword() 
     { 
      Password = Encrypter.Encode(this.Password); 
     } 

     [DataType(DataType.Password)] 
     [Display(Name = "Confirm password")] 
     [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
     public string ConfirmPassword { get; set; } 
    } 

答えて

2

。この

User validUser = (User)json_serializer.DeserializeObject(result.Data.ToString()); 

オブジェクトにデシリアライズして、失敗するだろうUser、としてそのオブジェクトをキャストしようとします。あなたは、一般的なメソッドを使用する必要があります。

User validUser = json_serializer.Deserialize<User>(result.Data.ToString()); 

それはJSON名とクラス名/ struicturesがChanging property names for serializing異なっている場合は、より多くの作業を行う必要があります完全に可能です。

+0

ええ、今回は私がこの編集された投稿に直面しています。何かアドバイス? – TyForHelpDude

関連する問題