0

ServiceStack.Text在我的 C# 项目中用作 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得到一个空字符串。为什么会发生,如何解决?

4

2 回答 2

2

如果 Json 对您的 Object 有效,这也可能有效:

 var cacheItem = (CacheItem) JsonSerializer.DeserializeFromString(result, typeof (CacheItem));
于 2013-01-10T17:30:43.827 回答
0

通过切换到在这种情况下行为正确的 Json.NET 解决了问题。

于 2013-01-01T16:32:08.870 回答