2014-06-10 33 views
-1

我正在使用簡單的代碼來讀取JSON數據。我之前需要一些幫助,但是我可以通過谷歌搜索來克服這個錯誤。但是這一次,沒有例外,而是一個不可理解的陳述。C#無法將我的字符轉換爲Foreach循環中的字符串

的說法是,

Unable to convert 'char' to 'string'.

我明白,有一個麻煩,而鑄造的字符數據類型爲字符串數據類型。但我從來沒有在我的代碼中使用任何字符序列。

這裏是我使用的代碼,

Stream fs = File.Open(new MainWindow().getFileName("events"), FileMode.Open); 
if (fs.Length != 0) 
{ 
    // File is not empty! 
    JsonObject jsonObject = (JsonObject)JsonObject.Load(fs); 
    // Get each event 
    foreach (string events in jsonObject["allEvents"].ToString()) { 
     /* here is the error */ 
    } 
} 

我得到的陣列,從JSON文件。並將其轉換爲字符串,但它一直告訴我我不能。文件內容如下:

{ 
    "allEvents": [ 
     { 
      "eventId": 1, 
      "eventType": "birthday" 
     }, 
     { 
      "eventId": 2, 
      "eventType": "meeting" 
     } 
    ] 
} 

現在,我真的不知道什麼是錯,怎麼了。但我無法讓它工作。請指導我!

快照的錯誤:它是編譯時錯誤,而不是運行時間(從添加喬恩斯基特代碼後)

enter image description here

+0

我認爲錯誤信息對你的錯誤非常清楚。 – Matt

+0

我也試過。這沒有用。 –

+0

你有一個JSON對象數組,而不是字符串。 –

回答

7

你在字符串使用foreach。有效:

string x = "foo"; 
foreach (string y in x) 

這是沒有意義的 - 一個string字符,不是的步驟的順序。爲了讓代碼編譯,你可以只是刪除ToString電話:

foreach (string eventItem in jsonObject["allEvents"]) 
{ 
    ... 
} 

這將讓它編譯,但每款產品是不是字符串 - 它是一個對象。實際上,我們需要使用我們的知識allEvents是一個數組。 (這個API設計得有點糟糕,IMO ...)

JsonArray array = (JsonArray) jsonObject["allEvents"]; 
foreach (JsonValue eventItem in array) 
{ 
    int id = (int) eventItem["eventId"]; 
    string type = (string) eventItem["eventType"]; 
    ... 
} 
+0

我做了同樣的事情,你告訴!它給了我一個冗長的名字,不能從'system.collections.generic.keyvaluepair'轉換爲'string'。由於我試圖明確,將其轉換爲字符串。但那也行不通! –

+1

@AzazaAhmadZeeshan:你的意思是第一段還是第二段?第一個片段解釋了爲什麼代碼不能編譯 - 但第二個片段就是你實際需要的。 –

+0

第二個代碼段!它仍然給我錯誤,無法將其轉換爲System.Json.JsonValue。 **錯誤無法將類型'System.Collections.Generic.KeyValuePair <字符串,System.Json.JsonValue>'轉換爲'System.Json.JsonValue'** –