Jak sprawdzić istnienie pola w żądaniu?

Jak sprawdzić istnienie pola w żądaniu?
MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 104
0

Cześć
Prosta sprawa
Mogą być trzy stany
True, false, unknown

True jeśli wartość jest
False jeśli wartości nie ma
Unknown gdy nie ma klucza

Gdy desrializuje się obiekt to gdy nie ma klucza to przypisywana jest wartość domyślna (null)
A ja bym chciał aby w modelu było coś na kształt optional lub pola isset

Czy da się to zrobić
Ewentualnie jak

Z góry dziękuję za odpowiedź

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
1

Żądaniu ??? REST ? Innym ?
Jakie serializery tam pracują ?

Mało dokladne to pytanie

MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 104
0

rozwiązanie znalazłem chwile po napisaniu pytania

Kopiuj
//kontroler
    [ModelBinder<CustomModelBinder>()] CustomModel customModel
)
Kopiuj
public sealed class CustomModel : IModelBinder
{
 public async Task BindModelAsync(ModelBindingContext bindingContext)
 {
   var streamReader = new StreamReader(bindingContext.HttpContext.Request.Body);
   var json = await streamReader.ReadToEndAsync();

   var jsonObjectItems = System.Text.Json.Nodes.JsonNode.Parse(json).AsObject();
   var items = jsonObjectItems.Select(x => x.Key); // tu w [items] są wszystkie "klucze" jakie przyszły
  /* 
    czyli jeśli w req jest możliwość wysłania
{
"A":"a",
"B":"b",
"C":"c"
} lub dwolnej kombinacji
{
"B":"b",
"C":"c"
}
czy
{
"A":"a",
"C":"c"
}
a z jakichś powodów potrzebna jest wiedza czy req miał w sobie takie czy inne pole - to można w taki sposób
   */


 }   
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.