外部json文件上的json.net序列化/反序列化

spa*_*imp 0 c# json json.net

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

{"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 }
Run Code Online (Sandbox Code Playgroud)

一旦我完成整个过程,我从调试器得到的输出显示流只接收json文件的第一部分(从第一个开始方括号到结束方括号的所有内容),所以我无法获得分数和平均分.以下是我目前尝试提取此信息的内容......

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

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

Vse*_*nin 5

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

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

var json = File.ReadAllText(filename);
var stats = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json);
Run Code Online (Sandbox Code Playgroud)