json.net serialization/deserialization 在外部 json 文件上

json.net serialization/deserialization on an external json file

我在 VS2012 中使用 c# 并安装了 json.net 文件来处理存储在外部文件 (1.json) 中的 json 字符串的反序列化。作为一个新手,我遇到过这样一种情况,我想从单个 json 字符串中提取称为 score 和 avarage score 的信息;见下文:

{"LEVEL": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
"score": 1,
"average score": 2 }

在我逐步完成该过程后,我从调试器获得的输出显示流仅获取 json 文件的第一部分(从第一个左方括号到右方括号的所有内容)所以我无法获得分数和平均分数。这是我目前尝试提取此信息的内容...

using (var sr = new StreamReader(File.OpenRead(filename)))
{
    levelData = sr.ReadLine();
    var stats = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(levelData);
}

任何人都可以就如何提取此信息提供任何建议吗?任何帮助将不胜感激。

问题是您正在逐行读取文件和反序列化数据。你不能用 json 来做到这一点,因为它是整个结构(比如 xml)。

相反,您应该反序列化整个文件:

var json = File.ReadAllText(filename);
var stats = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json);