Десериализация массива int всегда nulll - PullRequest
0 голосов
/ 27 апреля 2020

Когда я десериализирую строку JSON в свойстве массива объекта int, всегда устанавливается ноль Но другие свойства работающих найти. Вот пример JSON

{
   "userId":"1a163282-85ac-4ffb-94c6-20afb9473449",
   "clientCode":"Explicabo",
   "companies":[
      {
         "id":"982df206-efe2-40dc-a86c-e949d8b7f8f3",
         "clientId":"ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
         "code":"CMP000008",
         "databaseInfo":{
            "userId":"lahujo",
            "password":"Aspernatur perspicia",
            "server":"Est assumenda autem ",
            "modules":[
               3,
               2
            ],
            "subModules":[
               2
            ],
            "database":"C_Explicabo_KatelynDean"
         }
      },
      {
         "id":"c3894d01-eba7-45b2-9b47-0a7ed8752c4b",
         "clientId":"ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
         "code":"CMP000007",
         "databaseInfo":{
            "userId":"lahujo",
            "password":"Aspernatur perspicia",
            "server":"Est assumenda autem ",
            "modules":[
               3,
               2
            ],
            "subModules":[
               2
            ],
            "database":"C_Explicabo_LunaandDunnTraders"
         }
      },
      {
         "id":"e16d1d33-c050-4e58-9dce-b09616425fff",
         "clientId":"ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
         "code":"CMP000009",
         "databaseInfo":{
            "userId":"lahujo",
            "password":"Aspernatur perspicia",
            "server":"Est assumenda autem ",
            "modules":[
               3,
               2
            ],
            "subModules":[
               2
            ],
            "database":"C_Explicabo_PatrickReilly"
         }
      }
   ]
}

Когда я десериализовываю, объект возвращается, как показано ниже

{
  "userId": "1a163282-85ac-4ffb-94c6-20afb9473449",
  "clientCode": "Explicabo",
  "companies": [
    {
      "id": "982df206-efe2-40dc-a86c-e949d8b7f8f3",
      "clientId": "ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
      "code": "CMP000008",
      "payRollYear": 0,
      "modules": [],
      "subModules": [],
      "databaseInfo": {
        "userId": "lahujo",
        "password": "Aspernatur perspicia",
        "server": "Est assumenda autem ",
        "database": "C_Explicabo_KatelynDean"
      }
    },
    {
      "id": "c3894d01-eba7-45b2-9b47-0a7ed8752c4b",
      "clientId": "ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
      "code": "CMP000007",
      "payRollYear": 0,
      "modules": [],
      "subModules": [],
      "databaseInfo": {
        "userId": "lahujo",
        "password": "Aspernatur perspicia",
        "server": "Est assumenda autem ",
        "database": "C_Explicabo_LunaandDunnTraders"
      }
    },
    {
      "id": "e16d1d33-c050-4e58-9dce-b09616425fff",
      "clientId": "ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
      "code": "CMP000009",
      "payRollYear": 0,
      "modules": [],
      "subModules": [],
      "databaseInfo": {
        "userId": "lahujo",
        "password": "Aspernatur perspicia",
        "server": "Est assumenda autem ",
        "database": "C_Explicabo_PatrickReilly"
      }
    }
  ]
}

Я использую Ньютон JSON Сериализатор для десериализации объекта JsonConvert.DeserializeObject<T>(json)

Модель компании

public class CompanyInfoModel
{
    public CompanyInfoModel()
    {
        Modules = new List<int>();
        SubModules = new List<int>();
    }
    public string Id { get; set; }
    public string ClientId { get; set; }
    public string Code { get; set; }
    public int PayRollYear { get; set; }
    public List<int> Modules { get; set; }
    public List<int> SubModules { get; set; }
    public DbServerModel DatabaseInfo { get; set; }
}

Что мне не хватает?

Спасибо

1 Ответ

3 голосов
/ 27 апреля 2020

В ваших входных данных JSON ваши modules и subModules свойства являются членами databaseInfo и поэтому не должны быть в вашем CompanyInfoModel классе, они должны быть в вашем DbServerModel классе.

{
         "id":"982df206-efe2-40dc-a86c-e949d8b7f8f3",
         "clientId":"ea146f0d-e1b5-43e8-a3f2-7452b27a8e6a",
         "code":"CMP000008",
         "databaseInfo":{
            "userId":"lahujo",
            "password":"Aspernatur perspicia",
            "server":"Est assumenda autem ",
            "modules":[                       // <-- this is NOT a member of CompanyInfo. It's in "databaseInfo".
               3,
               2
            ],
            "subModules":[                    // <-- Ditto.
               2
            ],
            "database":"C_Explicabo_KatelynDean"
         }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...