2017-08-10 168 views
-3

当前正在试图制作一个系统,该按钮的颜色将根据按钮上的流媒体是否存在而改变。我有一种方法可以将json字符串下载到变量中,但我不知道该如何处理。我知道我必须检查json输出中的变量“stream”是否为null,这意味着流式传输器处于脱机状态,但我不知道如何执行该操作。从Twitch获取价值API

我会用我目前拥有的代码进行编辑。我得到了json被正确解析,做r.stream给了我适当的数据,但我无法弄清楚如何确定流是否存在。这应该检查按钮,这将刷新数据。

private void Refresh_Click(object sender, RoutedEventArgs e) 
    { 
     string url = @"https://api.twitch.tv/kraken/streams/camoduck?client_id=xskte44y2wfqin464ayecyc09nikcj"; 

     var json = new WebClient().DownloadString(url); 

     Rootobject r = JsonConvert.DeserializeObject<Rootobject>(json); 
     Console.WriteLine(r.stream); 
     if r.stream.game = "Grand Theft Auto V" 
     { 
      _1GUnit1.Background = Brushes.Red; 
     } 


    } 
+0

使用这个未知的网站。 https://www.google.com/search?q=c%23+how+to+parse+a+json –

+0

我花了几个小时搜索了不适合我的不同方式。 @ L.B –

+0

'不适合我的'。你认为你有一个非常特殊的情况?然后显示你的代码。 –

回答

2
....... 
var json = new WebClient().DownloadString(url); 
var r = JsonConvert.DeserializeObject<Rootobject>(json); 
Console.WriteLine(r.stream); 
if (r.stream==null) //How a null check can be done 
{ 
    _1GUnit1.Background = Brushes.Red; 
} 

BTW:如果您正在使用“http://json2csharp.com/ “,它可以合理RootObject不是Rootobject

+0

这个工作令人惊讶。我是C#的新手,可能应该提到这一点,并且我试图弄清楚如何与null进行比较。 +1谢谢。 –

1

没有你提供更多关于什么在你的情况下不起作用的细节,我不能给出一个深入的解释或指导。

我可以建议的是,你使用一个API包装,例如, TwitchLib。 这应该有助于您开始使用,并且应该为您的案例提供足够的文档。

0

您应该在Twitch API上进行更多阅读并搜索示例。当流处于脱机状态时,考虑放弃某种模板,因为没有数据要从请求解析。当一个流在线时,您将有权访问流对象的属性。例如,如果你的成功函数返回data,您可以分配结果:

game = data.stream.game; 
logo = data.stream.channel.logo; 
name = data.stream.channel.name; 
url = data.stream.channel.url; 
stream = data.stream.stream_type; 

这里假设你已经设置相应的变量(你没有提供任何代码)。

我还建议你花一些时间学习如何在浏览器中进行调试。更具体地说,在这种情况下,了解如何检查结果数据。这将揭穿什么的对象,你会看到数据及其属性等

看一看下面的叠后: Inspecting large JSON data in Chrome

+0

我加了我的代码和我目前的情况。正如你所看到的,它根本不起作用。但这是我得到的。 –

+0

我再次更新了 –