나는이 문제에 대해 오래 동안 인정받지 못했습니다. 제가하고 싶은 일을 설명하겠습니다. 경매가 많고 JSON 파일로 저장된 데이터가있는 웹 사이트가 있습니다. JSON.net의 디시리얼라이저를 사용하여 JSON 데이터를 구문 분석하는 방법을 이미 알아 냈습니다. 이제 내가해야 할 일은 해당 경매 목록에서 파싱 한 데이터를 가져온 다음 각 경매에서 항목 ID #를 사용하여 다른 웹 사이트에서 자세한 정보를 얻는 것입니다. 여기에 지금WP7에서 JSON 정보가있는 2 개의 다른 웹 사이트를 구문 분석합니다.
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 #를 사용하려고 시도하고 항목 이름과 항목에 대한 다른 정보를 표시하는 다른 웹 사이트에서 항목 이름을 가져옵니다. 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에서 두 번째 URL을 호출하면 예상대로 작동하지 않습니다. 내가 뭘하고 싶은 건지 주어진 itemID에서 항목 이름을 얻을 수있는 다음 itemName에 대한 변수로 설정합니다. 두 번째 JSON 구문 분석에서 가져온 항목 이름을 반환하고 첫 번째 JSON 호출에서 루트 개체의 itemID 값으로 설정하는 방법을 이해할 수 없습니다. 이게 도움이 되길 바란다.
내 원래의 질문을 명확히 했으므로 도움이되기를 바랍니다. – th3n3wguy