Zamiana próbki JSON na klasy lub rekordy C# dla System.Text.Json lub Newtonsoft.Json
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.Wystarczy wkleić próbkę JSON, aby otrzymać klasy lub rekordy C# z właściwościami w PascalCase i kluczem JSON w atrybucie JsonPropertyName lub JsonProperty. Liczby całkowite stają się int, powyżej 2 147 483 647 long, każda wartość dziesiętna zmienia pole na double, a wartość null lub brakująca staje się nullable, np. int?.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej próbkę JSON, na przykład odpowiedź API, do lewego pola.
Klasy C# pojawiają się w trakcie pisania, po jednej na obiekt, z właściwościami w PascalCase i kluczem JSON w atrybucie przy każdej z nich.
Wybierz System.Text.Json lub Newtonsoft.Json oraz rekordy z init, jeśli preferowane są modele niemutowalne.
Kliknij Kopiuj albo Pobierz, aby zapisać Models.cs, i deserializuj do klasy głównej.
C# wczytuje JSON do typowanych klas, a każda właściwość potrzebuje właściwego typu i sposobu na odnalezienie swojego klucza. Konwerter pisze takie klasy na podstawie próbki, więc długa odpowiedź API staje się kompilującym się modelem po jednym wklejeniu.
Jak dobierane są typy.
| Wartość JSON | Typ C# |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (tylko liczby całkowite) | int lub long powyżej 32 bitów |
| 4.5 (wystąpiła jakakolwiek część dziesiętna) | double |
| null oraz inny typ | int?, string? |
| tylko null lub różne rodzaje | object? |
| [ ... ] | List<...> |
| { } pusty | Dictionary<string, object> |
| { ... } | osobna klasa |
Klucze i nazwy. Właściwości są w PascalCase, więc user_name staje się UserName, a avatar_url AvatarUrl. Każda właściwość niesie swój oryginalny klucz w atrybucie, ponieważ System.Text.Json domyślnie porównuje nazwy z rozróżnianiem wielkości liter; Newtonsoft dostaje zamiast tego [JsonProperty]. Właściwość, która miałaby nazwę swojej klasy, co kompilator odrzuca jako CS0542, dostaje dopisane Value.
Tablice obiektów. Wszystkie obiekty tablicy są łączone w jedną klasę, więc klucz obecny tylko w niektórych nadal się w niej znajduje, jako nullable, aby jego brak był odczytywany jako null, a nie 0 lub false. Dwa obiekty o dokładnie tych samych kluczach i typach współdzielą jedną klasę.
Opcje. Rekordy z init dają niemutowalne modele porównywane według wartości. Klasa główna nazywa się Root, chyba że zostanie nazwana inaczej. Gdy sam JSON jest tablicą lub pojedynczą wartością, komentarz podaje typ do deserializacji, np. List.
Każdy wynik sprawdzono, odczytując C# z powrotem i porównując z nim 9 próbek według reguł serializatorów. Nic, co zostanie wklejone, nie opuszcza przeglądarki.
Po wklejeniu próbki JSON do konwertera obok pojawiają się klasy C#, po jednej na obiekt, z atrybutem JsonPropertyName przy każdej właściwości. Należy skopiować je do projektu i odczytać JSON przez JsonSerializer.Deserialize<Root>(json) lub JsonConvert.DeserializeObject<Root>(json), gdy wybrano Newtonsoft.
System.Text.Json domyślnie porównuje nazwy właściwości z rozróżnianiem wielkości liter, więc właściwość o nazwie UserName nigdy nie otrzymałaby klucza user_name. Atrybut podaje dokładny klucz, dzięki czemu nazwy w C# pozostają w PascalCase, a JSON jest odczytywany bez opcji serializatora i polityki nazewnictwa.
Właściwość jest nullable, gdy próbka zawiera dla niej null albo gdy niektóre obiekty tablicy pomijają jej klucz. Bez znaku zapytania brakująca liczba zostałaby po cichu odczytana jako 0, a brakująca flaga jako false, więc typ nullable odróżnia brak od zera.
Rekordy z akcesorami init sprawdzają się przy modelach tylko do odczytu, bo ich właściwości nie mogą się zmienić po deserializacji, a dwa rekordy o tych samych wartościach są równe. Klasy z set sprawdzają się przy modelach wypełnianych lub edytowanych. Oba działają z System.Text.Json od .NET 5 oraz z Newtonsoft.Json.
Liczby całkowite stają się int lub long, gdy wartość przekracza 2 147 483 647, a pole staje się double, gdy tylko którakolwiek wartość w próbce ma część dziesiętną. Wartości różnych rodzajów, np. liczba w jednym elemencie i tekst w innym, stają się object?, który zachowuje surową wartość JSON.
Nie. Konwersja działa w przeglądarce bez żadnego żądania do serwera, a JSON nie jest zapisywany, więc odpowiedzi API z tokenami lub danymi osobowymi zostają na urządzeniu. Po zamknięciu karty nic nie pozostaje.
Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.
Nadal coś nie działa? Zapytaj o narzędzie Konwerter JSON na klasy C# a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.