Десериализация ServiceStack.Text json создает неправильный объект вместо того, чтобы выбрасывать недопустимую входную строку json

Когда я пытаюсь десериализовать эту недопустимую строку json (}]отсутствует в конце):

[{"ExtId":"2","Name":"VIP sj�lland","Mobiles":["4533333333","4544444444"]

Делая это:

var result = JsonSerializer.DeserializeFromString(str);    

Десериализатор json ServiceStack принимает строку, но создает неверную объект, потому что я получаю объект 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, но никаких исключений не было. В январе я задал этот вопрос Настройте ServiceStack.Text для выдачи недопустимого JSON, и ответ был в том, что ServiceStack поддерживает отказоустойчивость и что я могу сделать запрос на вытягивание в GitHub.

Это все еще так? И кто-нибудь уже сделал это, избавив меня от хлопот? В противном случае у меня очень плотный график, поэтому, если у кого-то есть код или предложения о том, как создать флаг параметра, чтобы ServiceStack выбрасывал ошибки десериализации, пожалуйста, ответьте здесь, чтобы я мог сделать это быстрее.

14
задан Community 23 May 2017 в 11:44
поделиться