【发布时间】:2016-08-23 22:30:30
【问题描述】:
我正在尝试将 json(这里是指向它的链接 http://antica.e-sim.org/apiFights.html?battleId=3139&roundId=1)反序列化为对象列表。
这是我的课:
public class RootObject
{
public int Damage { get; set; }
public int Weapon { get; set; }
public bool Berserk { get; set; }
public bool DefenderSide { get; set; }
public double MilitaryUnitBonus { get; set; }
public int Citizenship { get; set; }
public int CitizenId { get; set; }
public bool LocalizationBonus { get; set; }
public string Time { get; set; }
public int MilitaryUnit { get; set; }
}
public class Battles: IEnumerable<RootObject>
{
public IEnumerable<RootObject> battles { get; set; }
public IEnumerator<RootObject> GetEnumerator()
{
return battles.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return battles.GetEnumerator();
}
}
这就是我获取 json 并尝试反序列化它的方式:
string url = "http://" + serverEsim + ".e-sim.org/apiFights.html?battleId=" +
battles.ElementAt(k).Key + "&roundId=" + i;
WebRequest req = WebRequest.Create(url);
WebResponse resp = req.GetResponse();
StreamReader jsr = new StreamReader(resp.GetResponseStream());
Battles battle = JsonConvert.DeserializeObject<Battles>(jsr.ReadToEnd());
当我尝试解散时,它给了我一个例外:
未处理的类型异常 'Newtonsoft.Json.JsonSerializationException' 发生在 Newtonsoft.Json.dll
附加信息:无法创建和填充列表类型 项目。战斗。路径'',第 3 行,位置 1。
我做错了什么?
【问题讨论】:
-
@PaulAbbott - 它可能是重复的,但该答案已过时。我添加了一个答案,反映了 Json.NET 的变化,因为它被问到了。