Quando provo a deserialise questa stringa non valida JSON (}]
mancante alla fine):ServiceStack.Text JSON deserializzazione crea oggetto sbagliato invece di gettare sulla stringa di input non valido JSON
[{"ExtId":"2","Name":"VIP sj�lland","Mobiles":["4533333333","4544444444"]
In questo modo:
var result = JsonSerializer.DeserializeFromString<T>(str);
il deserializzatore ServiceStack json accetta la stringa, ma crea un oggetto sbagliato, perché io alla fine con un oggetto C# avere questi valori:
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.
In questo caso sarebbe molto meglio lanciare un'eccezione anziché continuare con dati non validi. Pertanto ho provato a utilizzare:
JsConfig.ThrowOnDeserializationError = true;
appena prima di chiamare DeserializeFromString ma non è stata generata alcuna eccezione. A gennaio ho posto questa domanda Configure ServiceStack.Text to throw on invalid JSON e la risposta è stata che ServiceStack sta favorendo la resilence e che potrei fare una richiesta di pull in GitHub.
È ancora così? E qualcuno l'ha già fatto, salvandomi il disturbo? In caso contrario, ho un programma molto serrato, quindi se qualcuno ha qualche codice o suggerimenti su come creare un flag di opzione per far sì che ServiceStack influisca sugli errori di deserializzazione, per favore rispondi qui, in modo da poterlo fare più velocemente.
Ho visto il tuo post originale, sono d'accordo che si dovrebbe almeno avere la possibilità di trasformare rigorosa convalida JSON su. Ottengo gli stessi risultati passando al serializzatore Newtonsoft. Come una delle mie università ha sottolineato, se usiamo la serializzazione resiliente, stiamo tornando indietro nello stesso modo in cui è possibile analizzare il file html della spazzatura senza errori laddove consenta agli sviluppatori sciatti. – Bronumski
Questo sembra un bug. Hai depositato [un problema per questo] (https://github.com/ServiceStack/Issues/issues/new)? – jlyonsmith