JSON & Rest to ListBox - Нет информации - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь получить основные элементы в своем фиде JSON, но он не захватит его, только другие элементы? Зачем? Вот мой код:

    public MainPage()
    {
        InitializeComponent();
        GetData();
    }

    private void GetData()
    {
        string uri = "http://api.bing.net/json.aspx?AppId=MY-ID&Version=2.0&Market=en-US&Query=Pizza&Sources=phonebook&latitude=33.8563&longitude=-118.1232";
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(uri));
        request.BeginGetResponse(new AsyncCallback(ReadCallback), request);

    }

    private void ReadCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
        using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream()))
        {
            string resultString = streamReader1.ReadToEnd();
            var ser = new DataContractJsonSerializer(typeof(RootObject));

            var stream = new MemoryStream(Encoding.Unicode.GetBytes(resultString));
            DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(RootObject));
            RootObject myBook = (RootObject)jsonSerializer.ReadObject(stream);

            Deployment.Current.Dispatcher.BeginInvoke(() => Shops.ItemsSource = myBook.SearchResponse.Phonebook.Results); 

        }
    }

public class Query
{
    public string SearchTerms { get; set; }
}

public class Result
{
    public string Title { get; set; }
    public string Url { get; set; }
    public string Business { get; set; }
    public string PhoneNumber { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string StateOrProvince { get; set; }
    public string CountryOrRegion { get; set; }
    public string PostalCode { get; set; }
    public double Latitude { get; set; }
    public double Longitude { get; set; }
    public string UniqueId { get; set; }
    public string DisplayUrl { get; set; }
}

public class Phonebook
{
    public int Total { get; set; }
    public int Offset { get; set; }
    public string LocalSerpUrl { get; set; }
    public string Title { get; set; }
    public List<Result> Results { get; set; }
}

public class SearchResponse
{
    public string Version { get; set; }
    public Query Query { get; set; }
    public Phonebook Phonebook { get; set; }
}

public class RootObject
{
    public SearchResponse SearchResponse { get; set; }
}

Итак, когда я делаю Shops.ItemsSource = myBook.SearchResponse.Phonebook.Results, он добавляется в список, но несколько раз говорит ProjectName + Results в списке ...

Если я делаю myBook.SearchResponse.Phonebook.Total, у него нет проблем ... По какой-то причине я не могу заставить его указать название, город и т. Д., Которые находятся в "Результате" площадь ... почему?

Спасибо!

1 Ответ

0 голосов
/ 29 февраля 2012

Из вашего описания я считаю, что вам нужен DataTemplate

Попробуйте

<ListBox.ItemTemplate>
   <DataTemplate>
       <StackPanel>
           <TextBlock Text="{Binding City}" />
...