JSON to C# Class
Convertir JSON en définitions de classe C# POCO avec propriétés, annotations de données et attributs Newtonsoft.
À propos de cet outil
JSON to C# Class est un outil pour développeurs qui convertit automatiquement les structures de données JSON en définitions de classes C# POCO (Plain Old CLR Object). Lorsque vous travaillez avec des API, des fichiers de configuration ou des sources de données externes dans les applications .NET, disposer de classes C# fortement typées garantit la sécurité des types et active l'autocomplétion IntelliSense dans Visual Studio. Cet outil élimine le travail manuel fastidieux de définition de classes en analysant votre JSON et en générant du code C# prêt pour la production.
Collez simplement votre objet JSON dans le champ d'entrée et cliquez sur le bouton convertir. L'outil analyse la structure, détecte les types de données, gère les objets et les tableaux imbriqués, et génère des classes C# avec les types de propriété appropriés, les attributs Newtonsoft.Json pour la sérialisation, et les anotations nullable optionnelles. Le code généré peut être immédiatement copié dans votre projet .NET et utilisé avec les bibliothèques JSON populaires comme Newtonsoft.Json (Json.NET) ou System.Text.Json.
C'est particulièrement utile pour les développeurs intégrant les API REST, traitant les fichiers de configuration ou désérialisant les réponses d'API en C#. Le code généré prend en charge les objets imbriqués, les propriétés optionnelles et les mappages d'attributs personnalisés, ce qui le rend compatible avec les versions de framework et les applications .NET modernes.
Questions Fréquentes
Implémentation du Code
import json
from typing import Any
def to_pascal_case(s: str) -> str:
return ''.join(w.capitalize() for w in s.replace('-', '_').split('_'))
def cs_type(value: Any, key: str) -> str:
if isinstance(value, bool):
return "bool"
if isinstance(value, int):
return "int"
if isinstance(value, float):
return "double"
if isinstance(value, str):
return "string"
if isinstance(value, list):
if value:
return f"List<{cs_type(value[0], key)}>"
return "List<object>"
if isinstance(value, dict):
return to_pascal_case(key)
return "object"
def generate_classes(data: dict, class_name: str, classes: list) -> None:
props = []
for k, v in data.items():
prop_name = to_pascal_case(k)
type_str = cs_type(v, k)
if type_str == "string":
type_str = "string?"
props.append(f' [JsonProperty("{k}")]')
props.append(f' public {type_str} {prop_name} {{ get; set; }}')
if isinstance(v, dict):
generate_classes(v, prop_name, classes)
classes.append(f"public class {class_name}\n{{\n" + "\n".join(props) + "\n}")
json_str = '{"name": "Alice", "age": 30, "active": true}'
data = json.loads(json_str)
classes = []
generate_classes(data, "Root", classes)
print("\n\n".join(classes))Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.