2016-11-27 86 views
-3

我目前正在開發一個需要反序列化JSON文件的項目,但它顯示比我最初認爲的更難以理解和理解。C# - 反序列化JSON(.net)到列表框

我想要做的是deserialize this JSON file到我的Windows窗體項目(located here)列表框中。我希望把每一個位於「Unity5Stable」的版本到列表框(5.4.3,5.4.2等)

部分JSON:

{ 
    "Unity5Stable": { 
    "5.4.3": { 
     "x86": "http://netstorage.unity3d.com/unity/01f4c123905a/Windows32EditorInstaller/UnitySetup32-5.4.3f1.exe", 
     "x64": "http://netstorage.unity3d.com/unity/01f4c123905a/Windows64EditorInstaller/UnitySetup64-5.4.3f1.exe" 
    }, 
    "5.4.2": { 
     "x86": "http://download.unity3d.com/download_unity/b7e030c65c9b/Windows32EditorInstaller/UnitySetup32-5.4.2f2.exe", 
     "x64": "http://download.unity3d.com/download_unity/b7e030c65c9b/Windows64EditorInstaller/UnitySetup64-5.4.2f2.exe" 
    }, 
    "5.4.1": { 
     "x86": "http://download.unity3d.com/download_unity/649f48bbbf0f/Windows32EditorInstaller/UnitySetup32-5.4.1f1.exe", 
     "x64": "http://download.unity3d.com/download_unity/649f48bbbf0f/Windows64EditorInstaller/UnitySetup64-5.4.1f1.exe" 
    } 
    } 
} 

我已經嘗試了一些不同的建議從一對夫婦的網站,但我很難找到任何有關把對象放入列表框。

任何幫助將不勝感激!

+0

你可以開始在你的表單中加入一個ListBox,並在github中標題爲「因爲我討厭自己做事」..努力嘗試或搜索其他人 – NtFreX

+1

不完全確定你爲什麼是敵對的,我有一個列表框準備好了,還有一些破解代碼,我自己試着在本地回購。我不會將未完成的代碼推向在線回購。正如我也說過的,我嘗試過搜索,現在已經在本地工作了大約六個小時。但是,如果我錯誤地提出了這個問題並給出了這種印象,我很抱歉。 –

+0

@DuckBread歡迎來到SO。我建議去槽[幫助中心>問](http://stackoverflow.com/help/asking)瞭解什麼是好問題,什麼不好。也不要鏈接到非現場資源,而是寫下問題本身的必要細節。如果非現場資源由於任何原因而離線,這裏的問題本身並不適用於其他讀者。 – Jim

回答

0

我不熟悉列表框,但我知道你可以將一個json反序列化成一個對象。你創建一個與你的json具有相同類型和名稱變量的對象,反序列化到它,然後你可以訪問你的變量。我在一個xamarin表單項目中使用了newtonsoft.JSON。

0

JSON反序列化

你可以反序列化JSON到一個已知類型與JsonSerializerNewtonsoft.Json(更多細節here

或者從System.Web.HelpersJson類,你可以反序列化JSON到dynamic。 (更多細節here

dynamic data = Json.Decode(json); 

列表框

ListBox有一個屬性Items這是一個集合,您可以添加對象。您可以添加一個string或任何其他對象。該對象的ToString方法將被調用並且它的值將被顯示。

+0

我認爲我現在走在了正確的軌道上 - 我注意到由於我使用的JSON對象名稱,無法正確執行此操作。方法名稱不能使用小數(heck,偶數)。有沒有辦法解決這個問題? –

+0

@DuckBread是你的權利,這是一個問題。在generel中,你可以在變量名中使用數字,但不能在變量名的開頭。但它通常是一個糟糕的做法,因此會使代碼無法讀取。 – NtFreX

+0

我將它設置爲它將從JSON接收數據到ListBox的位置,只是現在我收到了「意外的字符」異常。我在[GitHub repo here](https://github.com/ryanguy426/UVM/tree/Broken-StackOverflow)上爲這個問題創建了一個新的分支,這是我現在得到的錯誤:http: //pastebin.com/CLHJCLaB。我也將問題代碼移動到[MainWindow.cs](https://github.com/ryanguy426/UVM/blob/Broken-StackOverflow/UVM/MainWindow.cs)中,以便輕鬆實現。 –