2016-01-12 74 views
0

這是我從GitHub下載:https://gist.githubusercontent.com/Keeguon/2310008/raw/bdc2ce1c1e3f28f9cab5b4393c7549f38361be4e/countries.jsonhttps://raw.githubusercontent.com/dominictarr/random-name/master/first-names.json解析從GitHub下載JSON文件在C#中UWP

我在我的應用雙機的TextBlocks,我要檢查的國家和名字是否進入存在在名單中或沒有。

我希望應用程序脫機,因此我下載了這些文件。真的是新的JSON。

是否有任何其他選項來填充名稱國家等列表?

更新:我已經嘗試了大量的東西,包括Mathew的答案下面的代碼。但是,我收到以下消息

在名稱位置0x75A86ABE(combase.dll)處未處理異常Thing.exe:0xC000027B:發生應用程序內部異常(參數:0x097EF758,0x00000002)。

我想是這樣的:

private void newbt_Click(object sender, RoutedEventArgs e) 
    { 
     List<Places> myPlaces = JsonConvert.DeserializeObject<List<Places>>("Assets/countries.json"); 
     bool zimbabwe = myPlaces.Any(x => x.name == "Zimbabwe"); 
     if (zimbabwe) 
      NTB.Text = ""; 

    } 
+2

退房:http://www.json.net,有一些關於他們的教程文檔可能會幫助你。 – CodingGorilla

+0

你的問題是什麼?無法理解你想要什麼。 –

回答

0

JSON.net是最好的工具,我知道的操縱JSON。使用的NuGet到json.net添加到您的項目,那麼你可以將JSON轉換成像這樣的列表:

List<Country> countries = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Country>>(json); 

這就需要你在你的項目中定義了這個類:

public class Country 
{ 
    public string name { get; set; } 
    public string code { get; set; } 
} 

和你可以檢查,如果該國使用列表與lambda表達式LINQ:

 bool zimbabwe = countries.Any(x=>x.name=="Zimbabwe");//true 
     bool fakecountry = countries.Any(x => x.name == "fake");//false 

要回答你的問題

是否有任何其他選項來填充名稱國家等列表?

是的,還有其他的選擇。 JSON.net也支持JSONPath,它基本上是XPath的一個拷貝,但是對於JSON而不是XML。你可能有麻煩,雖然因爲它看起來像你的JSON是無效的JSON(屬性名稱應該像這樣引號:{'name':'Zimbabwe','code':'ZW'}

+0

我得到未處理的異常消息。查看帖子中的更新。 –