Похоже, что JSON.NET пишет неверный JSON, хотя я не удивлюсь, если бы это произошло из-за моего неправильного использования.
Похоже, что он повторяет последние несколько символов JSON:
/* ... */ "Teaser":"\nfoo.\n","Title":"bar","ImageSrc":null,"Nid":44462,"Vid":17}]}4462,"Vid":17}]}
Повторяющаяся строка:
4462,"Vid":17}]}
Я распечатал ее на консоли, поэтому я не думаю, что это ошибка в визуализаторе текста Visual Studio.
Код сериализации:
static IDictionary<int, ObservableCollection<Story>> _sectionStories;
private static void writeToFile()
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
using (IsolatedStorageFileStream stream = storage.OpenFile(STORIES_FILE, FileMode.OpenOrCreate))
{
using (StreamWriter writer = new StreamWriter(stream))
{
writer.Write(JsonConvert.SerializeObject(_sectionStories));
}
}
#if DEBUG
StreamReader reader = new StreamReader(storage.OpenFile(STORIES_FILE, FileMode.Open));
string contents = reader.ReadToEnd();
JObject data = JObject.Parse(contents);
string result = "";
foreach (char c in contents.Skip(contents.Length - 20))
{
result += c;
}
Debug.WriteLine(result);
// crashes here with ArgumentException
// perhaps because JSON is invalid?
var foo = JsonConvert.DeserializeObject<Dictionary<int, List<Story>>>(contents);
#endif
}
Я что-то здесь не так делаю?Или это ошибка?Есть какие-нибудь известные обходные пути?
Любопытно, что JObject.Parse()
не выдает никаких ошибок.
Я создаю приложение Silverlight для Windows Phone 7.