C#无法在Foreach循环中将我的Character转换为String

时间:2014-06-10 18:45:11

标签: c# json string

我使用简单的代码来读取JSON数据。我以前需要一些帮助,但是我能够通过谷歌搜索来解决这个错误。但这一次,没有例外,相反,这是一个不可理解的陈述。

陈述是,

  

无法将'char'转换为'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文件中获取数组。并将其转换为String,但它一直告诉我,我不能。文件内容为

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

现在,我真的不知道出了什么问题,怎么回事。但我无法让它发挥作用。请指导我!

错误的快照:这是编译时错误,而不是运行时(从Jon Skeet添加代码之后)

enter image description here

1 个答案:

答案 0 :(得分: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"];
    ...
}