2015-05-03 4 views
2

У меня есть эта строка, которую я пытаюсь десериализовать для объекта, но каждый раз, когда он преобразуется, свойство Roles не возвращается обратно.Deserialize string не преобразует массив

{ "LoginAttemptId": 235, "UserProfileId": 4, "Имя пользователя": "devclient1", "Идентификатор": NULL, "SubscriptionType": NULL, "Роли": [ "Клиент"]}

я попытался оба эти методы десериализации:

PauperToPresidentSerializedModel serializeModel = 
       JsonConvert.DeserializeObject<PauperToPresidentSerializedModel>(decUserData); 

       //PauperToPresidentSerializedModel serializeModel 
       // = serializer.Deserialize<PauperToPresidentSerializedModel>(decUserData); 

и оба дают мне и объект, где свойство Роли является Null, вместо того, чтобы «клиент» в нем.

здесь является определение obejct PauperToPresidentSerializedModel

public class PauperToPresidentSerializedModel 
    { 
     public long LoginAttemptId { get; set; } 

     public long UserProfileId { get; set; } 
     public string Username { get; set; } 

     public string Id { get; set; } 

     public string SubscriptionType { get; set; } 
     public string[] Roles { get; private set; } 
     public PauperToPresidentSerializedModel(PauperToPresidentPrincipal principal) 
     { 
      LoginAttemptId = principal.LoginAttemptId; 
      UserProfileId = principal.UserProfileId; 
      Username = principal.Username; 
      Id = principal.Id; 
      SubscriptionType = principal.SubscriptionType; 
      Roles = principal.Roles; 
     } 
     public PauperToPresidentSerializedModel() 
     {    
     } 
    } 
+1

отсутствующего определения PauperToPresidentSerializedModel, пожалуйста, измените ваш вопрос – InferOn

+1

Ваш сеттер для ролей является частным –

ответ

2

Ваш Roles поле имеет частный сеттера. Вы могли бы:

  1. Сделать это общественное
  2. Иметь контракт доступа распознаватель частные поля:

    contractResolver.DefaultMembersSearchFlags |= BindingFlags.NonPublic;

  3. Создание пользовательского контракта распознаватель (я предполагаю, что вы не хотите идти этот маршрут).

+0

Благодаря я полностью пропустил частный сеттер – ChampChris

0

Вы должны иметь все свойства общественности для сериализации и десериализации:

public string[] Roles { get; set; } 
Смежные вопросы