我一直被困在這個問題上的時間超過了我的承認。讓我解釋我想做什麼。我有一個網站,有一堆拍賣和他們的數據存儲爲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的值。我希望這有幫助。
澄清我的原始問題,所以我希望這可能會有所幫助。 – th3n3wguy 2012-01-08 03:44:28