2012-01-07 63 views
0

我一直被困在這個問題上的時間超過了我的承認。讓我解釋我想做什麼。我有一個網站,有一堆拍賣和他們的數據存儲爲JSON文件。我已經想出瞭如何使用JSON.net的解串器來解析JSON數據。現在,我需要做的是從拍賣列表中獲取我解析的數據,然後使用每個拍賣中的物品ID#從另一個網站獲取更詳細的信息。以下是我迄今爲止:用WP7中的JSON信息解析2個不同的網站

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); 
} 

這裏是我目前使用的存儲拍賣信息類:

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; } 
} 

現在,這裏是我的問題。我正嘗試使用從該JSON解析中獲得的項目ID#,並從另一個網站獲取項目名稱,該項目名稱將顯示項目名稱以及有關該項目的一組其他信息。這個網址就像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調用第二個URL,它不會按照我期望的方式工作。我想要做的是能夠從給定的itemID獲取項目名稱,然後將其設置爲itemName的變量。我不明白我將如何返回剛剛從第二個JSON解析中獲得的項目名稱,並將其設置爲來自第一個JSON調用的根對象中itemID的值。我希望這有幫助。

回答

0

你的問題對我來說並不是很清楚,但是你想在uri中擁有你的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")); 
} 

問題是否得到ITEMID中用來解析特定的項目,你可以使用EventArgs的回調得到uri並過濾它的ID

+0

澄清我的原始問題,所以我希望這可能會有所幫助。 – th3n3wguy 2012-01-08 03:44:28