2015-04-27 65 views
3

我有JSON字符串是這樣的:C#如何解析JSON數據沒有鍵名?

{"fields":[{"type":"none","options":["option1","option2","option3"]}]} 

我使用JObject解析JSON數據。我可以解析具有名稱的數據,如類型等。但是,我怎樣才能解析沒有名稱的數據,比如option1,option2和option3?這裏是我的代碼:

JObject object = JObject.Parse(jsonString); 
var type = object["fields"][0]["type"].ToString(); 

但問題是與選項。

+1

順便說一句,它如果你能有幫助發佈真正的,可編譯的代碼 - 你不能使用'object'作爲標識符。如果您發佈了一個簡短但完整的程序來說明問題,那麼幫助您會更容易。 –

回答

6

options的值只是一個值的數組 - 如fields是。但是那裏的每個值只是一個字符串,而不是一個關鍵/值對的進一步映射。

所以,你可以使用:

string firstOption = (string) jsonObject["fields"][0]["options"][0]; 

如果你想整個的選項設置爲List<string>,你可以使用:

var options = jsonObject["fields"][0]["options"] 
    .Select(option => (string) option) 
    .ToList(); 
+0

感謝您的回覆。我試過了。我得到空引用異常。 – Matthew

+0

@Matthew:那麼你提供的確切的JSON,我提供的代碼工作正常。所以我懷疑你在那裏有一個錯字,或者你的JSON實際上並不是這樣。 –

+0

謝謝你,你的代碼工作正常。我刪除了代碼的其他部分,所以我在該行發生異常。 – Matthew

1
string jsonString = @"{""fields"":[{""type"":""none"",""options"":[""option1"",""option2"",""option3""]}]}"; 

var obj = JObject.Parse(jsonString); 
var options = obj["fields"][0]["options"].ToList();