2012-01-07 4 views
0

私はこの問題を私が認める気には長すぎます。私がしたいことを説明しましょう。私はオークションの束とそのデータがJSONファイルとして保存されているウェブサイトを持っています。私はすでにJSON.netのデシリアライザを使用してJSONデータを解析する方法を考え出しました。さて、私がする必要があるのは、オークションの出品から解析したデータを取得し、各オークションでアイテムid#を使用して別のウェブサイトからより詳細な情報を取得することです。ここでは、今WP7のJSON情報を持つ2つの異なるWebサイトを解析します。

public class AuctionListing 
{ 
    public long auctionID { get; set; } 
    public string itemName { get; set; } 
    public long itemID { get; set; } 
    public string owner { get; set; } 
    public long bid { get; set; } 
    public long buyout { get; set; } 
    public long quantity { get; set; } 
    public string timeLeft { get; set; } 
} 

私の問題である:

ここ
public AuctionSearch() 
{ 
    InitializeComponent(); 
    WebClient proxy = new WebClient(); 
    proxy.OpenReadCompleted += new OpenReadCompletedEventHandler(get_auction_info); 
    proxy.OpenReadAsync(new Uri("http://www.example.com/auctions/")); 
} 

void get_auction_info(object sender, OpenReadCompletedEventArgs e) 
{ 
    Stream stream = e.Result; 
    StreamReader sr = sr.ReadToEnd(); 
    var root = JsonConvert.DeserializeObject<AuctionListing>(result); 
} 

は、私は現在のオークション情報を格納するために使用していたクラスである:ここでは、私がこれまで持っているものです。私はそのJSON解析から取得した項目ID#を使用して、項目名とその項目に関する他の情報を表示する別のWebサイトから項目名を取得しようとしています。 URLはhttp://www.newexample.com/i/%itemID%/jsonのようなものになりますので、情報を解析する必要があります。私がそれを解析したら、各オークションのアイテム情報の残りの部分に名前を付けることに問題があります。私は基本的に上記と同じ機能を持ちますが、別のクラスに解析します(もちろん)。誰かが私を助けようとしていることについて十分な情報を与えてくれることを願っています。もし私がここで完全なコードを投稿する必要があれば、できますが、かなり長いです。私の問題はOpenReadAsyncの仕組みと関係があると思いますが、私は確かではありません。あなたに他の質問がある場合は教えてください。

明確化

私は、アイテム名を取得する方法を理解しています。私の問題は、両方のパースからすべての情報を保存したいということです。以下は私のソースコードです。私はそれの後に何が起こるか説明します。

(continuation of the code from above) 
void get_auction_info(object sender, OpenReadCompletedEventArgs e) 
{ 
    (stuff from above) 

    for (int i = 0; i < root[i].Length; i++) 
    { 
     WebClient client = new WebClient(); 
     client.OpenReadCompleted += new OpenReadCompletedEventHandler(auction_information); 
     client.OpenReadAsync(new Uri("http://www.newexample.com/i/" + root[i].itemID + "/json")); 

     TextBlock tb = new Textblock(); 
     tb.Text = (
        "Auction ID #: " + root[i].auctionID + 
        "\nItem ID: " + root[i].itemID + "\n\n" 
       ); 
     tb.TextWrapping = TextWrapping.NoWrap; 
     TextPanel.Children.Add(tb); 
    } 
} 

void aucton_information(object sender, OpenReadCompletedEventArgs e) 
{ 
    Stream stream = e.Result; 
    StreamReader itemStreamReader = new StreamReader(stream); 
    string theResult = itemStreamReader.ReadToEnd(); 

    var secondRoot = JsonConvert.DeserializeObject<AuctionInfo>(theResult); 

    stream.Close(); 
    itemStreamReader.Close(); 
} 

これは私の問題です。 auction_information OpenReadAsyncから2番目のURLを呼び出すと、それは期待通りに動作しません。私がしたいのは、指定されたitemIDから項目名を取得し、それをitemNameの変数として設定できるようにすることです。 2番目のJSON解析から取得した項目名をどのように返して、最初のJSON呼び出しからのルートオブジェクトのitemIDの値として設定するのか分かりません。私はこれが役立つことを願っています

答えて

0

あなたの質問は本当に私には分かりませんが、あなたはitemIDをuriに入れたいと思っていますか?

あなたはちょうどあなたがオークションをやったのと同じ方法で行うことができます。問題は、あなたがいるEventArgs eを使用することができ、特定のアイテムを解析するために使用されるコールバックでITEMIDを取得している場合

public ItemSearch() 
{ 
    InitializeComponent(); 
    WebClient proxy = new WebClient(); 
    proxy.OpenReadCompleted += new OpenReadCompletedEventHandler(get_item_info); 
    proxy.OpenReadAsync(new Uri("http://www.example.com/i/" + auction.itemID.ToString() + "/json")); 
} 

uriを取得し、それからIDをフィルタリングしてください。

+0

私のオリジナルの質問を明確にしました。 – th3n3wguy

関連する問題