我使用简单的代码来读取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添加代码之后)
答案 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"];
...
}