JSON object will be sent from view to server-side (controller) and
will be converted to entities (C# objects). At that moment, I can
perform server-side validation. After that, entities are converted
back to JSON [...]
I understand the necessity of server-side validation, but I'm not happy with converting JSON to C# entities and back to JSON.
In effetti, deserializzare le stringhe JSON sugli oggetti solo per convalidare il contenuto può essere eccessivo. Nel complesso, se finiremo per serializzarli nuovamente su JSON (beh, non è necessario serializzarli di nuovo poiché abbiamo già il JSON originale).
Is this a proper way to do server-side validation?
Citando @Christopher
Sì, questo è un modo corretto per fare la validazione - niente è intrinsecamente sbagliato nell'operazione ... Ma ecco alcune altre opzioni se vuoi migliorare le prestazioni e mantenere comunque la funzionalità corrente
Schemi JSON
Gli schemi JSON consentono di convalidare il formato JSON (modello) e diversi vincoli come non valori nulli, campi obbligatori, modelli corrispondenti, ecc. Se la tua libreria è personalizzabile, probabilmente ti sarà consentito estendere il processo di convalida in modo che tu, può aggiungere nuovi vincoli (piuttosto legati al business). Se hai familiarità con XML, JSON Schemas e XSD sono omologhi.
JSONPath
Oltre agli schemi JSON abbiamo JsonPath 1 per interrogare le stringhe JSON senza dover associare JSON a dati specifici Modelli. Beh, almeno non a uno di cui dobbiamo preoccuparci. Se hai bisogno di un approccio programmatico (a differenza del dichiarativo, come usano gli schemi JSON), JsonPath dovrebbe fare il lavoro.
In ogni caso, entrambi non si escludono a vicenda.
1: Questa è praticamente la stessa idea di XPath