我想创建一个程序,从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...
}
}
}
}
任何想法都会非常感激:)
答案 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);