JSON to C# Class
Konversi JSON ke definisi kelas C# POCO dengan properti, anotasi data, dan atribut Newtonsoft.
Tentang alat ini
JSON to C# Class adalah alat pengembang yang secara otomatis mengonversi struktur data JSON menjadi definisi kelas C# POCO (Plain Old CLR Object). Saat bekerja dengan API, file konfigurasi, atau sumber data eksternal dalam aplikasi .NET, memiliki kelas C# yang diketik dengan kuat memastikan keamanan tipe dan mengaktifkan penyelesaian otomatis IntelliSense di Visual Studio. Alat ini menghilangkan pekerjaan manual yang membosankan dalam mendefinisikan kelas dengan menganalisis JSON Anda dan menghasilkan kode C# siap produksi.
Cukup tempel objek JSON Anda ke dalam bidang input dan klik tombol konversi. Alat ini menganalisis struktur, mendeteksi tipe data, menangani objek dan larik bersarang, dan menghasilkan kelas C# dengan tipe properti yang sesuai, atribut Newtonsoft.Json untuk serialisasi, dan anotasi nullable opsional. Kode yang dihasilkan dapat langsung disalin ke proyek .NET Anda dan digunakan dengan perpustakaan JSON populer seperti Newtonsoft.Json (Json.NET) atau System.Text.Json.
Ini sangat berguna untuk pengembang yang mengintegrasikan REST API, memproses file konfigurasi, atau mendeserialisasi respons API di C#. Kode yang dihasilkan mendukung objek bersarang, properti opsional, dan pemetaan atribut khusus, menjadikannya kompatibel dengan versi framework dan aplikasi .NET modern.
Pertanyaan yang Sering Diajukan
Implementasi Kode
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.