加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用C#.NET从JSON字符串填充通用列表?

发布时间:2020-12-15 17:44:22 所属栏目:百科 来源:网络整理
导读:我试图在C#中填充一个列表,但这些值不会出现在数组中 – 尽管在我尝试使用数组索引设置变量(因为它的范围超出范围)时,它并没有引发错误. 这是我在调试时看到的确切的返回字符串strJSON. strJSON "{"id":34379899,"name":"Revelation22","profileIconI
我试图在C#中填充一个列表,但这些值不会出现在数组中 – 尽管在我尝试使用数组索引设置变量(因为它的范围超出范围)时,它并没有引发错误.

这是我在调试时看到的确切的返回字符串strJSON.

strJSON "{"id":34379899,"name":"Revelation22","profileIconId":547,"summonerLevel":30,"revisionDate":1387913628000}"

为什么列表(数组)不填充?

这是KeyValue.cs的代码(老实说,我不知道为什么需要另一个类)

namespace LoLSummoner
{
    public class KeyValue
    {
        public int id {get; set;}
        public string name {get; set;}
        public int profileIconId {get; set;}
        public int summonerLevel {get; set;}
        public int revisionDate {get; set;}
    }
}

这是Summoner.svc.cs的代码

namespace LoLSummoner
{
    public class Summoner : ISummoner
    {

        public int GetSummonerID(string SummonerName)
        {
            int summonerId = 0;

            WebClient client = new WebClient();
            string strJSON = client.DownloadString("http://prod.api.pvp.net/api/lol/na/v1.2/summoner/by-name/" + SummonerName + "?api_key=xxxx");

            JavaScriptSerializer js = new JavaScriptSerializer();

            KeyValue[] arrJSON = js.Deserialize<List<KeyValue>>(strJSON).ToArray();

            summonerId = Convert.ToInt32(arrJSON.GetValue(0));

            return summonerId;
        }
    }
}

解决方法

>您的RevisionDate属性必须很长,因为1387913628000,这是您尝试反序列化的值超过int范围.
>您的JSON包含只有一个KeyValue对象的信息,而不是那里的数组,因此您必须将其反序列化为KeyValue,不需要KeyValue []:
KeyValue item = js.Deserialize<KeyValue>(strJSON);

>使用KeyValue实例,您可以使用标准属性语法返回ID:

return item.id;

我发现这个代码工作:

public class KeyValue
{
    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; }
}
static void Main(string[] args)
{
    var input = @"{""id"":34379899,""name"":""Revelation22"",""profileIconId"":547,""summonerLevel"":30,""revisionDate"":1387913628000}";

    JavaScriptSerializer js = new JavaScriptSerializer();

     var item = js.Deserialize<KeyValue>(input);

     var summonerId = item.id;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读