2012-12-31 46 views
0

我在我的C#項目中使用​​作爲JSON庫,並試圖使用它的TypeSerializer.DeserializeFromString來反序列化文件中的字符串。使用ServiceStack的TypeSerializer進行文件反序列化

我有以下代碼:

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

問題通過切換到Json.NET在這種情況下表現正確解決。

2

如果JSON是有效的對象,這可能工作,以及:

var cacheItem = (CacheItem) JsonSerializer.DeserializeFromString(result, typeof (CacheItem)); 
相關問題