【问题标题】:Deserialize int array always nulll反序列化 int 数组始终为空
【发布时间】:2020-04-27 04:32:12
【问题描述】:

当我将 JSON 字符串反序列化为对象 int 数组属性时,始终设置为 null。但其他属性工作找到。这是示例 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"
      }
    }
  ]
}

我正在使用 Newton JSON Serializer 反序列化对象 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; }
}

我错过了什么?

谢谢

【问题讨论】:

    标签: c# json json.net deserialization


    【解决方案1】:

    在您的输入 JSON 中,您的 modulessubModules 属性是 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"
             }
          }
    

    【讨论】:

    • 哦该死的..非常感谢您的指出。真可惜:(
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多