2014-04-05 22 views
0

我是一名android開發者,我是windows phone的新手,在這裏 我跟着this來處理windows phone7/8中的列表框。窗戶手機JSON解析形成一個URL到異步列表框?

但我在這裏試圖解析JSON形式的URL,實際上上面的例子是在異步列表框中的XML,但在這裏我需要做Json形式的異步列表框(列表視圖)的URL。

這一點,我使用的代碼URL

private void FlickrSearch_Click(object sender, RoutedEventArgs e) 
    { 
     WebClient webclient = new WebClient(); 
     webclient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webclient_DownloadStringCompleted); 
     webclient.DownloadStringAsync(new Uri("http://api.flickr.com/services/feeds/photos_public.gne?tag=" + SearchBox.Text + "&format=rss2")); // Flickr search 
    } 

收到但我需要用這個JSON形式的異步列表框

請人建議我的JSON從URL中, Windows手機的一部分。

+0

上述網址,例如,在給您正在恢復XML不是JSON。所以你不能在這裏使用JSON –

回答

1

其實這個問題對於完整的詳細答案有點寬泛。但是假設你已經設法通過遵循上面提到的博客文章來處理XML數據,那麼你可以做一些調整,使其與JSON一樣。

  1. 從的NuGet
  2. 安裝Json.Net檢查通過在瀏覽器中打開的API搜索 URL API返回的JSON格式。不要忘記將格式規範更改爲json,例如 http://api.flickr.com/services/feeds/photos_public.gne?tag=car&format=json。 你會看到返回的json字符串無效。需要 的手動清理使其有效:刪除"jsonFlickrFeed("在 開頭,")"在json字符串結尾。然後字符串是 準備好使用Json.Net進行反序列化。
  3. 其餘部分應該是在原來的博客文章

繼解釋,同樣是代碼段用於處理JSON數據部分:

using Newtonsoft.Json.Linq; 
using Newtonsoft.Json; 

void webclient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    if (e.Error != null) 
    { 
     MessageBox.Show("error"); 
     return; 
    } 

    var jsonString = e.Result; 

    //clean up json string to make it valid json 
    jsonString = jsonString.Replace("jsonFlickrFeed(", ""); 
    jsonString = jsonString.Remove(jsonString.Length - 1); 

    //deserialize json string to object 
    var rootObject = JsonConvert.DeserializeObject<JObject>(jsonString); 
    var items = (JArray)rootObject["items"]; 

    //populate listbox with items from json 
    listBox1.ItemsSource = from tweet in items          
    select new FlickrData         
    { 
     ImageSource = tweet["media"]["m"].ToString(), 
     Message = tweet["description"].ToString(), 
     UserName = tweet["title"].ToString(), 
     PubDate = DateTime.Parse(tweet["published"].ToString())          
    };     
} 
+1

謝謝你的答案先生.. – MLN