【问题标题】:JsonDeserializing a streamreaderJson反序列化流阅读器
【发布时间】:2015-08-18 06:55:31
【问题描述】:

我试图对流读取器(来自 webRequest 的源)进行反序列化,然后将该 json 数据插入到对象中,但对象永远不会获取数据。

            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();

json 响应是

{"amarasul":{"id":5560607,"name":"amarasul","profileIconId":787,"summonerLevel":30,"revisionDate":1439893886000}}

summoner.cs 是

    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);

    }
}

【问题讨论】:

  • 首先——检查响应状态码。它可能会失败。您应该收到状态码 200
  • 我应该写 (int)responde.StatusCode 吗?导致它不工作
  • 请发布示例 JSON 和 Summoner 类
  • 完成了,谢谢我忘记了

标签: c# json api deserialization webrequest


【解决方案1】:

问题是您的 JSON 中有一个额外的层,一个名为 amarasul 的对象,没有得到解决。

如果你像下面这样更改你的 Summoner 类,它应该可以正常工作:

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; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多