JSON na klasę C#
Wklej próbkę JSON i otrzymaj z powrotem klasy POCO w C# gotowe do wklejenia do pliku .cs. Dobiera sensowne typy, obsługuje zagnieżdżone obiekty dodatkowymi definicjami klas, wspiera nullowalne typy referencyjne i emituje atrybuty System.Text.Json lub Newtonsoft.Json zależnie od projektu.
Jak przekonwertować JSON na C#
-
1
Wklej JSON
Jedna próbka wystarcza. Wiele próbek poprawia wnioskowanie nullowalności i typów elementów tablicy.
-
2
Wybierz styl
System.Text.Json (.NET 6+) lub Newtonsoft.Json (starszy). Nazwy właściwości PascalCase z `[JsonPropertyName]` dla JSON-a w camelCase.
-
3
Wybierz docelową wersję C#
C# 10+ dla rekordów i przestrzeni nazw o zasięgu pliku, C# 8 dla nullowalnych typów referencyjnych albo starszą dla maksymalnej kompatybilności.
-
4
Skopiuj klasy
Jedna klasa główna plus klasy zagnieżdżone dla każdego kształtu obiektu, wszystko w jednym pliku gotowym do wrzucenia do projektu.
Przykładowy wynik
Dla wejścia:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
Wynik System.Text.Json (C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
Mapowanie typów
| JSON | Typ C# |
|---|---|
| string | string |
| liczba całkowita | int (lub long dla > int.MaxValue) |
| liczba (dziesiętna) | double (lub decimal, jeśli wybrane) |
| boolean | bool |
| null | object? (lub scalony z rodzeństwem) |
| data ISO-8601 | DateTime (lub DateOnly) |
| ciąg w kształcie GUID | Guid |
| tablica stringów | List<string> |
| obiekt | Klasa zagnieżdżona |
Opcje atrybutów
- System.Text.Json (
[JsonPropertyName("foo")]), preferowany dla .NET 6+ i nowych projektów. - Newtonsoft.Json (
[JsonProperty("foo")]), dla starszych projektów albo gdy potrzebujesz funkcji specyficznych dla Newtonsoft. - Brak, nazwy właściwości dokładnie odpowiadają kluczom JSON (działa tylko, jeśli klucze JSON są już w PascalCase).
Częste błędy
- Używanie
intdla pola, które może się przepełnić. Jeśli Twój JSON ma wartości przekraczająceint.MaxValue, użyjlong. Generator awansuje automatycznie, gdy widzi duże wartości. - Brak
[JsonIgnore]dla właściwości obliczanych. Jeśli dodasz pomocnicze właściwości do wygenerowanej klasy, oznacz je[JsonIgnore], bo inaczej będą serializowane na wyjściu. - Zapomnienie o parsowaniu niezależnym od kultury. Pola
decimalpowinny deserializować się zCultureInfo.InvariantCulture; System.Text.Json robi to domyślnie, Newtonsoft z ustawieniami globalnymi. - Zaufanie generatorowi na jednej próbce. Nullowalność i typy elementów tablicy są zgadywane z tego, co widzi. Zawsze sprawdź adnotacje nullowalności względem rzeczywistego zachowania Twojego API.
Najczęściej zadawane pytania
Dla nowych projektów na .NET 6+ użyj System.Text.Json, jest szybszy, wbudowany i obsługuje teraz niemal każdą funkcję, którą ma Newtonsoft. Newtonsoft użyj dla starszych projektów albo gdy potrzebujesz jego specyficznych funkcji (niestandardowe contract resolvery, JObject, obsługa dynamiczna).
Rekordy są idiomatyczne dla niezmiennych DTO w C# 10+. Dają równość wartościową i zwięzłą składnię. Klasy są lepsze, gdy potrzebujesz mutacji lub kompatybilności ze starszym kodem. Narzędzie pozwala wybrać dowolne.
Jeśli projekt używa nullowalnych typów referencyjnych (C# 8+), pola zaobserwowane jako null w którejkolwiek próbce stają się string?, int? itd. Bez NRT nullowalność jest sygnalizowana tylko dla typów wartościowych (np. int?).
Mieszanych tablic obiektów o różnych kształtach nie da się bezpośrednio przedstawić w silnie typowanym C#. Narzędzie wnioskuje wspólną klasę bazową lub (awaryjnie) object; dla mieszanych tablic zwykle warto przeprojektować JSON.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator EditorConfig
Wygeneruj plik .editorconfig z własnymi regułami stylu i rozmiaru wcięć, końca linii, kodowania i białych znaków, aby uzyskać spójne formatowanie w różnych IDE i edytorach.
Walidator adresów e-mail
Zweryfikuj adres e-mail: sprawdzenie składni RFC 5322, sprawdzenie rekordu MX w czasie rzeczywistym oraz szczegóły dotyczące części lokalnej, domeny i długości. Żadna wiadomość nie jest wysyłana.
Formatowanie HTML
Formatuj HTML lokalnie w przeglądarce, używając wcięć dwóch lub czterech spacji. HTML nie jest wysyłany ani walidowany.
Narzędzie jest dostępne w innych językach
- Từ JSON đến lớp C# [VI]
- JSON zu C# Klasse [DE]
- JSON para Classe C# [PT]
- JSON을 C# 클래스로 [KO]
- JSON ถึงคลาสใน C# [TH]
- تحويل JSON إلى فئة C# [AR]
- JSON till C#-klass [SV]
- JSON naar C#-klasse [NL]
- JSON vers classe C# [FR]
- JSON ke Kelas C# [ID]
- JSONからC#クラスへ [JA]
- JSON a Clase C# [ES]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]