0

C# プロジェクトで JSON ライブラリとして使用ServiceStack.Textしており、それを使用してファイルから文字列を逆シリアル化しようとしています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 がオブジェクトに対して有効な場合、これも同様に機能する可能性があります。

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

この状況で正しく動作する Json.NET に切り替えることで問題が解決しました。

于 2013-01-01T16:32:08.870 に答える