2014-01-19 65 views
0

我一直在爲我的個人使用編寫一個Minecraft發射器(source)。我已經到了需要解析包含官方啓動程序已經提供的所有可用「配置文件」的JSON文件的地步。它看起來像這樣:使用C#獲取JSON.NET中的屬性名稱

{ 
    "profiles": { 
    "1.6.2": { 
     "name": "1.6.2", 
     "gameDir": "C:\\Users\\Ilan\\AppData\\Roaming\\.ilan\\1.6.2mc", 
     "lastVersionId": "1.6.2", 
     "allowedReleaseTypes": [ 
     "snapshot", 
     "release" 
     ], 
     "playerUUID": "e2f423057b72487eb6f7f8ce877a8015" 
    }, 
    "1.6.1": { 
     "name": "1.6.1", 
     "gameDir": "C:\\Users\\Ilan\\AppData\\Roaming\\.ilan\\1.6.1", 
     "lastVersionId": "1.6.1" 
    }, 
    "13w38c": { 
     "name": "13w38c", 
     "lastVersionId": "13w38c", 
     "javaArgs": "-Xmx1G", 
     "allowedReleaseTypes": [ 
     "snapshot", 
     "release" 
     ], 
     "playerUUID": "e2f423057b72487eb6f7f8ce877a8015", 
     "useHopperCrashService": false 
    }, 

正如你可以看到,有一個名爲「配置文件」的對象,並在其中有變量名的屬性。我想獲取這些屬性的名稱,而不是它們的值。我不知道該怎麼做,我嘗試了Value或只是簡介.ToString(),但這兩個結果都給了我屬性本身的內容,而不是它的名字。有沒有辦法得到名字?
編輯:它解析配置文件JSON代碼:

string profileJSON = File.ReadAllText(Variables.profileJSONFile); 
    JObject profiles = JObject.Parse(profileJSON); 
    MessageBox.Show(profiles["profiles"].ToString()); 
    foreach (JProperty profileAvail in profiles["profiles"]) 
    { 
     MessageBox.Show(profileAvail.ToString()); 
    } 
+0

哦,對了。現在添加它.. – Ilan321

+1

你試過'profileAvail.Name'嗎? – wdosanjos

+0

...有效.. – Ilan321

回答

0
 

    IDictionary< string, JToken > json = Jobject.Parse(strJson); 


    foreach (var kv in json) 
    { 
     Console.WriteLine(kv.Key); 
    }