C# JSO序列化streamreader
我正在尝试反序列化一个streamreader(来自webRequest的源代码),然后将json数据发送到一个对象,但是Objet从未获得数据C# JSO序列化streamreader,c#,json,api,deserialization,webrequest,C#,Json,Api,Deserialization,Webrequest,我正在尝试反序列化一个streamreader(来自webRequest的源代码),然后将json数据发送到一个对象,但是Objet从未获得数据 WebRequest req = WebRequest.Create("API REQUEST HERE"); WebResponse responde = req.GetResponse(); StreamReader rd = new StreamReader(responde.GetRes
WebRequest req = WebRequest.Create("API REQUEST HERE");
WebResponse responde = req.GetResponse();
StreamReader rd = new StreamReader(responde.GetResponseStream(), Encoding.ASCII);
Summoner summo = new Summoner();
JsonSerializer serializer = new JsonSerializer();
JsonTextReader textrd = new JsonTextReader(rd);
summo = serializer.Deserialize<Summoner>(textrd);
summo.Ver();
Console.ReadKey();
而召唤师是
public class Summoner
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public int summonerLevel { get; set; }
public long revisionDate { get; set; }
public void Ver()
{
Console.WriteLine(this.id);
Console.WriteLine(this.name);
Console.WriteLine(this.profileIconId);
Console.WriteLine(this.revisionDate);
Console.WriteLine(this.summonerLevel);
}
}
问题是JSON中有一个额外的层,一个名为amarasul的对象,它没有被处理 如果你改变你的召唤师等级,如下所示,它应该可以正常工作:
using System;
public class Summoner
{
public Amarasul amarasul { get; set; }
public void Ver()
{
Console.WriteLine(amarasul.id);
Console.WriteLine(amarasul.name);
Console.WriteLine(amarasul.profileIconId);
Console.WriteLine(amarasul.revisionDate);
Console.WriteLine(amarasul.summonerLevel);
}
}
public class Amarasul
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public int summonerLevel { get; set; }
public long revisionDate { get; set; }
}
首先-检查响应状态代码。它可能会失败。您应该收到状态代码200我应该写(int)responde.StatusCode吗?因为它不工作,请发布一个JSON示例和召唤器类完成,谢谢我忘了
using System;
public class Summoner
{
public Amarasul amarasul { get; set; }
public void Ver()
{
Console.WriteLine(amarasul.id);
Console.WriteLine(amarasul.name);
Console.WriteLine(amarasul.profileIconId);
Console.WriteLine(amarasul.revisionDate);
Console.WriteLine(amarasul.summonerLevel);
}
}
public class Amarasul
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public int summonerLevel { get; set; }
public long revisionDate { get; set; }
}