Detectarea diferenței dintre proprietatea nulă și proprietatea omisă în JSON

Am o webservice RESTful care primește JSON și o desenează într-o clasă C# folosind DataContractJsonSerializer, deși acest lucru poate fi schimbat.

Scopul său este de a actualiza câmpurile pe o resursă

de exemplu.:

{
    "firstName" : "Martin"
}

Nu vreau neapărat să actualizez toate câmpurile și speram să găsească o modalitate de a detecta domenii care sunt și nu sunt nespecificate în JSON.

Nu pot găsi o modalitate de a face acest lucru, totuși, pentru că nu știu cum să spun diferența dintre un câmp nespecificat și un câmp care ar trebui să fie actualizat la nul

de exemplu: (nu actualizați niciun câmp):

{}

vs: (actualizarea câmpului firstName la null)

{
    "firstName" : null
}

Care este cel mai bun mod de a aborda acest lucru?

1

2 răspunsuri

Cred că puteți folosi un câmp inițializat cu un șir aleator

public class TestClass
{
    public string firstName = "some string";
}

Dacă deserializați folosind {"firstName": null} , primul nume va fi nul. dacă deserializați folosind {} primul nume nu se va schimba ( some string )

PS: Nu folosiți atributele DataContract sau DataMember dacă folosiți DataContractJsonSerializer

1
adăugat

Nu sunt sigur cine utilizează serviciul web, însă sună ca ceva pe care ar trebui să-l hotărâți și apoi spuneți consumatorilor cum funcționează (mai degrabă decât să se bazeze pe consumator să facă acest lucru corect). Nu cred că ar fi înțelept să spunem că toate câmpurile pot sau nu pot fi sunt setate la null, deci fiecare instanță ar fi tratată diferit.

0
adăugat
Sunt de acord cu dvs. și există încă reguli în ceea ce privește ceea ce poate/nu poate fi actualizat și ceea ce este nul labil/nu este nul. Dar pentru domeniile pe care le permit consumatorului să se actualizeze la nul, trebuie să pot detecta diferența dintre consumatorul care decide să nu actualizeze câmpul (adică să îl lase neatins), în timp ce încearcă să îl actualizeze la o valoare nulă. Cred că L.B. o mai mult sau mai puțin pe cuie.
adăugat autor Martin Booth, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com