• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Json - napis jako wartość, ale nie string

Object Storage Arubacloud
+1 głos
476 wizyt
pytanie zadane 11 lipca 2022 w C# przez Pawel1995 Gaduła (3,810 p.)

Hej, pisze aplikacje w C# która ma plik konfiguracyjny w formacie json.

Ładuje dane z pliku json do modelu. Mam w tym modelu pole typu enum.

public class MyModel
{
        public DeviceRemote MyDevice;
}

public enum DeviceRemote
        {
            Device1 = 1,
            Device2 = 2,
            Device3 = 3
        }

kiedy zapisuje do konfiga to mam w jsonie:

 "MyDevice": 1,

a chciałbym mieć 

"MyDevice": Device1,

tylko że nie chce tego mieć jako string, chciałbym pozostać przy enumie.

 

W jaki sposób mógłbym to zrobić? Czy są na to jakieś sposoby?

1 odpowiedź

+2 głosów
odpowiedź 11 lipca 2022 przez adrian17 Ekspert (344,860 p.)
wybrane 13 lipca 2022 przez Pawel1995
 
Najlepsza

chciałbym pozostać przy enumie

Nie możesz. To albo będzie liczba (przekonwertujesz do enuma castem) albo string (przekonwertujesz używając Parse). Nie ma nic pomiędzy, bo JSON po prostu nie ma bardziej wyrafinowanych typów wartości.

komentarz 11 lipca 2022 przez VBService Ekspert (253,100 p.)
komentarz 11 lipca 2022 przez adrian17 Ekspert (344,860 p.)
To raczej nic dodatkowego nie mówi? Co chciałeś tym linkiem przekazać?
komentarz 11 lipca 2022 przez Wiciorny Ekspert (269,710 p.)

@VBService, serializacja  jest w kierunku modelu, wtedy domyślnie to model decyduje o typie, konwersja zachodzi na obiekt serializowany, a tutaj kolega ma inny problem i  nie jest on po stronie serializowania do modelu, tylko deserializacji do JSON  obiektu z C#, który nie zachowuje  typów.

Jest szansa na zachowanie typów ale nie z JSON, do tego można użyc gRPC i pliki proto, gdzie proto-message zachowuja format danych, tzn samemu możesz nadać format w postaci "interfejsów pisanych" jako pliki .proto, albo typscriptowym interface. 

https://docs.microsoft.com/en-us/aspnet/core/grpc/protobuf?view=aspnetcore-6.0
GRPC ma to do siebie ze niestety dane nie idą tak prosto stringami/txt ale binarnie 

Podobne pytania

0 głosów
0 odpowiedzi 150 wizyt
pytanie zadane 14 maja 2016 w C# przez therrax Nowicjusz (240 p.)
+1 głos
3 odpowiedzi 584 wizyt
pytanie zadane 16 października 2015 w C# przez niezalogowany
0 głosów
1 odpowiedź 113 wizyt
pytanie zadane 18 sierpnia 2021 w JavaScript przez s85 Nowicjusz (200 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...