在调用API后,将JSON对象反序列化为C#类[重复]。

问题描述 投票:0回答:1

我想把我从API调用中得到的JSON对象翻译成一个C#类,我又可以反过来迭代,然而JSON我似乎无法正确解读JSON.JSON对象样本。

  "status": "ok",
  "meta": {
    "count": 1,
    "hidden": null
  },
  "data": {
    "111111111": [
      {
        "ship_id": 4180588496
      },
      {
        "ship_id": 4284430032
      },
      {
        "ship_id": 3767482320
      }
     ]
   }
}

主要是在数据下,这个对象在我每次调用时都有不同的名字,因为它是我请求数据的球员的Player ID。本质上,我希望能够在'11111111'类中迭代数据。我不知道如何继续下去,我试过接收一个有ship_id的Interfaces列表,我试过从JSON生成类到C#,但现在我完全没有办法了。任何帮助将被感激.我目前的接收类的设置看起来像这样。

    public class WgShipRequest
    {
        public string Status { get; set; }

        public WgPlayerShip Data { get; set; }
    }

    public class WgPlayerShip
    {
        public IList<WgShipId> Ships { get; set; }
    }

    public class WgShipId
    {
        public long Ship_Id { get; set; }
    }
c# json api
1个回答
0
投票

你最大的问题是你的模型与你的json字符串不匹配。你可以用一个字典来表示你的数据,你的模型就会像这样。

        public void Deserialize()
        {
            var obj = JsonConvert.DeserializeObject<RootObject>(json);
        }

        private string json = @"{""status"": ""ok"",
  ""meta"": {
    ""count"": 1,
    ""hidden"": null
  },
  ""data"": {
    ""111111111"": [
      {
        ""ship_id"": 4180588496
      },
      {
        ""ship_id"": 4284430032
      },
      {
        ""ship_id"": 3767482320
      }
     ]
   }
}";

        public class RootObject
        {
            public string Status { get; set; }
            public MetaData Meta { get; set; }
            public IDictionary<string, IEnumerable<Ship>> Data { get; set; }
        }

        public class MetaData
        {
            public int Count { get; set; }
            public string Hidden { get; set; }
        }       

        public class Ship
        {
            public long Ship_Id { get; set; }
        }
© www.soinside.com 2019 - 2024. All rights reserved.