因此我需要一个网站来获取此JSON数据。 链接是直接的(我正在使用网站的API)
问题是,文件太大了!成千上万的行......更多..
我有visual studio 2013,我需要做的是在回调中下载JSON数据,然后解析它以获得特定值。我正在使用Newtonsoft.JSON来解析它,这是我认为可以解析它
var obj = JsonConvert.DeserializeObject<JContainer>(jsonText);
var value = (int)obj["response"]["prices"]["5021"]["6"]["0"]["current"]["value"];
问题是,如何下载所有数据并将其转换为C#类?还有另外一种方法吗? 非常感谢。
编辑:如果不是JSON,我可以选择以JSONP和VDF格式下载
以下是JSON数据的链接 - http://backpack.tf/api/IGetPrices/v3/?format=json&key=52f75dab4dd7b82f698b4568
答案 0 :(得分:2)
我这样做了
using (var webClient = new System.Net.WebClient())
{
var json = webClient.DownloadString("http://backpack.tf/api/IGetPrices/v3/?format=json&key=00a00aaa0aa0a00a000a0000");
Newtonsoft.Json.Linq.JObject o = Newtonsoft.Json.Linq.JObject.Parse(json);
var value = (int)o["response"]["prices"]["5021"]["6"]["0"]["current"]["value"];
Console.WriteLine(value);
}
感谢大家的帮助!!
答案 1 :(得分:0)
答案 2 :(得分:0)
看看Brandon发表的评论,他原则上是正确的,但如果你不想要的话,你不必转到Newtonsoft。您只需要使用不同的JSON.NET API
var serializer = new JsonSerializer();
using (var stream = File.OpenRead("C:\\Users\\gweakliem\\Downloads\\sotest.js"))
{
using (StreamReader streamReader = new StreamReader(stream))
{
using (JsonReader reader = new JsonTextReader(streamReader))
{
var aThing = serializer.Deserialize<JContainer>(reader);
var aValue = (int) aThing["response"]["prices"]["5021"]["6"]["0"]["current"]["value"];
Console.WriteLine("Read a value " + aValue);
}
}
}
如果您担心在阅读时阻塞此线程,看起来您将不得不编写一些代码。我没有在JsonTextReader或JsonSerializer上看到等待的方法,所以我希望这些方法会阻塞。
现在,如果你想把它变成对象,这里有几个其他的SO帖子:
或this post涵盖了一系列反序列化选项。