2017-01-30 12 views
0

私はここ数日を運がないと分かりませんでした。私はあなたが助けてくれることを願っています。別の方法で文字列にアクセスすることができません

以下は私のコンソールアプリケーションの一部です。2つの異なる方法は、それぞれ異なる速度で動作する独自のタイマーになっているため、同じ方法にはできません。私はJSON.net/JObjectを使用していますが、これはhttpclient経由でjsonに送信されています。

私はこのコード

Console.WriteLine(itemTitle); 

を使用して、さまざまな方法から

JObject Grab = JObject.Parse(httpResponse(@"https://api.example.jp/json.json").Result); 

string itemTitle = (string)Grab["channel"]["item"][0]["title"]; 

の結果にアクセスしようとしている私は非常に多くの異なる方法を試してみましたが、すべてが成功していません。 以下は、Json.netに関するコードの完全なセクションです。

namespace ConsoleApplication3 
{ 
internal class Program 
{ 
     ...other code 

    public static async Task<string> httpResponse(string url) 
    { 
     HttpClientHandler httpHandler = new HttpClientHandler() 
     { 
      AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
     }; 
     using (var httpClient = new HttpClient(httpHandler)) 
      return await httpClient.GetStringAsync(url); 
    } 

    public static void JSONUpdateTimer(object sender, ElapsedEventArgs e) 
    { 
     JObject Grab = JObject.Parse(httpResponse(@"https://api.example.jp/json.json").Result); 

     string itemTitle = (string)Grab["channel"]["item"][0]["title"]; 
     Console.WriteLine(itemTitle); 

     JSONUpdate.Interval = JSONUpdateInterval(); 
     JSONUpdate.Start(); 
    } 

    public static void SecondTimer(object source, ElapsedEventArgs e) 
    { 
     Console.WriteLine(itemTitle); 
     ...other Commands using "itemTitle" 
    } 
} 
} 

私はそれが指摘されている場合、私は手のひらに直面するように何かが分かりません。しかし、私は助けを感謝します。

答えて

3

itemTitleという文字列フィールドを、メソッドの外部にあるクラスのメンバーとして宣言します。

internal class Program 
{ 
    static string itemTitle; 
    //other code... 
} 

あなたのメソッドでは、フィールドを参照するだけで、新しい変数を宣言しないでください。

public static void JSONUpdateTimer(object sender, ElapsedEventArgs e) 
{ 
    //... 
    itemTitle = (string)Grab["channel"]["item"][0]["title"]; 
    //... 
} 

メソッド内で宣言された変数は、そのメソッドに対してローカルスコープであり、そのメソッドの外部には存在しません。

+0

ありがとう、私はこれに多くの時間を費やしてきました。 – GumboMcGee

関連する問題