我在我的C#项目中使用ServiceStack.Text
作为JSON库,我正在尝试使用它TypeSerializer.DeserializeFromString
从文件中反序列化字符串。
我有以下代码:
async public static void TryLoad(Action<JsonArrayObjects> Ok,
Action<string> Fail, string key, int offset)
{
try
{
var folder = ApplicationData.Current.LocalFolder;
var stream = await folder.OpenStreamForReadAsync(key);
var result = await new StreamReader(stream).ReadToEndAsync();
Debug.WriteLine(result);
var cacheItem = TypeSerializer.DeserializeFromString<CacheItem>(result);
if (cacheItem.IsValid(offset) == true) Ok(cacheItem.Data); else Fail(key);
}
catch (Exception)
{
Fail(key);
}
}
Debug.WriteLine
此处输出正确的JSON字符串,但下一行TypeSerializer.DeserializeFromString
会产生异常:
A first chance exception of type 'System.IndexOutOfRangeException' occurred in Unknown Module.
好像TypeSerializer
得到一个空字符串。为什么会发生这种情况?如何解决?
答案 0 :(得分:2)
如果Json对你的对象有效,这可能也有效:
var cacheItem = (CacheItem) JsonSerializer.DeserializeFromString(result, typeof (CacheItem));
答案 1 :(得分:0)
通过切换到在这种情况下正常运行的Json.NET解决了问题。