錯了對象當我嘗試deserialise這個無效的JSON字符串(}]
到底丟失):ServiceStack.Text JSON反序列化創建的,而不是扔無效JSON輸入字符串
[{"ExtId":"2","Name":"VIP sj�lland","Mobiles":["4533333333","4544444444"]
通過這樣做:
var result = JsonSerializer.DeserializeFromString<T>(str);
的ServiceStack JSON解串器接受的字符串,但它產生了錯誤的對象,因爲我結束了具有這些值的C#對象:
ExtId : "2" // ok fine.
Name: "VIP sj�lland" // ok fine
Mobiles: ["4533333333","4544444444", "544444444"]// Aarg! An array with 3 objects ?!?
// There were only two in the JSON string.
在這種情況下,拋出異常會更好,而不是繼續使用不良數據。因此,我嘗試使用:
JsConfig.ThrowOnDeserializationError = true;
就在調用DeserializeFromString之前,但未引發異常。在一月份,我問了這個問題Configure ServiceStack.Text to throw on invalid JSON,答案是ServiceStack支持重啓,並且我可以在GitHub中提出請求。
這仍然是這種情況嗎?有沒有人已經做到了,省去了我的麻煩?否則,我的日程安排非常緊張,所以如果任何人有關於如何創建一個選項 - 使得ServiceStack拋出反序列化錯誤的選項標記或建議,請在這裏回覆,以便我可以更快地完成此操作。
我看到你原來的職位,我同意你至少應該有一個選項,把嚴格JSON驗證上。通過切換回Newtonsoft序列化程序,我可以得到相同的結果。正如我的一個高校指出的那樣,如果我們使用彈性序列化,我們又回到了允許垃圾html在沒有錯誤的情況下進行分析的道路,因爲它允許草率的開發人員。 – Bronumski 2013-04-04 15:56:09
這看起來像一個錯誤。你是否提出了[問題](https://github.com/ServiceStack/Issues/issues/new)? – jlyonsmith 2014-08-28 07:24:51