在调用API后,将JSON对象反序列化为C#类[重复]。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在调用API后,将JSON对象反序列化为C#类[重复]。相关的知识,希望对你有一定的参考价值。
我想把我从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; }
}
答案
你最大的问题是你的模型与你的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; }
}
以上是关于在调用API后,将JSON对象反序列化为C#类[重复]。的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 返回反序列化为从 RestSharp 调用到 API 的对象数组?