2015-01-06 3 views
0

Я работаю с C# в VS2012 и установил файлы json.net для десериализации json-строки, которая хранится во внешнем файле (1.json). Как новичок, я столкнулся с ситуацией, в которой я хочу извлечь информацию, названную так же, как оценка балла и оценки из одной строки json; см ниже:сериализация/десериализация json.net на внешний файл json

{"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); 
} 

Кто может предоставить какие-либо рекомендации о том, как я могу извлечь эту информацию? Любая помощь будет принята с благодарностью.

ответ

5

Проблема в том, что вы читаете, а файл и десериализуете данные по строкам. Вы не можете сделать это с помощью json, поскольку это вся структура (например, xml).

Вместо этого вы должны десериализации весь файл:

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

Спасибо, это действительно работает. – spacechimp

Смежные вопросы