从JSON文件获取数据并在c#中使用它

时间:2014-08-23 09:39:06

标签: c# json api stream

我想创建一个程序,从API生成的JSON文件中读取一些数据 以下是该JSON文件的示例:

{"block4o": {
   "id": 20153910,
   "name": "Block4o",
   "profileIconId": 616,
   "revisionDate": 1408783284000,
   "summonerLevel": 30
}}

我需要做的是从中获取id和名称。   到目前为止,这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.IO;
using System.Net;


namespace ConsoleApplication30
{
    class Program
    {
        static void Main(string[] args)
        {
        }
        public void HowToMakeRequestsToHttpBasedServices()
        {
            Uri serviceUri = new Uri("https://eune.api.pvp.net/api/lol/eune/v1.4/summoner/by-name/Block4o?api_key=****");
            WebClient downloader = new WebClient();
            downloader.OpenReadCompleted += new OpenReadCompletedEventHandler(downloader_OpenReadCompleted);
            downloader.OpenReadAsync(serviceUri);
        }

        void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                Stream responseStream = e.Result;
                // Continue working with responseStream here...
            }
        }
    }
}

任何想法都会非常感激:)

1 个答案:

答案 0 :(得分:1)

您可以使用NuGet安装Newtonsoft.Json并编写如下的smth:

if (e.Error == null)
{
    string text = e.Result;
    var events = JsonConvert.DeserializeObject<List<Event>>(text);
}

我的代码使用我的类Event并从JSON字符串获取事件列表

最好使用Newtonsoft.Json而不是内置库,因为你不能使用它们是一些现代项目类型(例如windows phone app)

------------------------更新

您可以创建课程:

public class Block
{
    public int id;
    public string name;
    public int profileIconId;
    public int revisionDate;
    public int summonerLevel;
}

public class BlockWrapper
{
    public Block block4o;
}
//...
BlockWrapper blockWrapper = JsonConvert.DeserializeObject<BlockWrapper>(text);