2013-07-10 46 views
1

我想反序列化一個JSON字符串「{提示:6}」到一個類使用ServiceStack.Text。以下是一個測試案例。問題在於控制檯輸出0而不是6.所以看起來'提示'字段'HintsCount'類未被設置爲新值。ServiceStack DeserializeFromString沒有設置字段

public class HintsCount 
{ 
    public int Hints { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var hintsCount = JsonSerializer.DeserializeFromString<HintsCount>("{Hints:6}"); 

     Console.WriteLine(hintsCount.Hints); 

     Console.ReadLine(); 
    } 
} 

控制檯打印出'0'而不是預期的'6'。

任何想法爲什麼這是這樣嗎?

回答

1

試試這個:

var hintsCount = JsonSerializer.DeserializeFromString<HintsCount>(@"{""Hints"":6}"); 

var hintsCount = JsonSerializer.DeserializeFromString<HintsCount>("{\"Hints\":6}"); 
+0

在你的情況JSON字符串格式無效。您可以驗證http://jsonlint.com/上的任何json字符串。 {「提示」:6} - 有效,但{提示:6}無效。 – oakio

1

注意,這不是有效的JSON:

"{Hints:6}" 

JSON requires該對象文字的所有屬性的名稱被引用,而不是嘗試:

"{\"Hints\":6}" 

您可以直接序列化模型,找出正確的JSON應該是什麼,e.g:

new HintsCount { Hints = 6 }.ToJson().Print(); 
+0

上面的公共屬性中的代碼不是'提示'嗎?添加你的代碼行仍然沒有改變結果,無論我有提示作爲公共領域或財產。 – Ramsay

+0

正確,錯過了 - 這是因爲它是無效的JSON - 更新的答案。 – mythz

相關問題