İçeriğe geç
🛠️ToolsShed

JSON to C# Class

JSON'u özellikleri, veri açıklamalarını ve Newtonsoft öznitelikleri içeren C# POCO sınıf tanımlarına dönüştürün.

Bu araç hakkında

JSON to C# Class, JSON veri yapılarını otomatik olarak C# POCO (Plain Old CLR Object) sınıf tanımlarına dönüştüren bir geliştirici aracıdır. .NET uygulamalarında API'ler, yapılandırma dosyaları veya dış veri kaynakları ile çalışırken, güçlü şekilde yazılan C# sınıflarına sahip olmak tür güvenliğini sağlar ve Visual Studio'da IntelliSense otomatik tamamlanmasını etkinleştirir. Bu araç, JSON'unuzu analiz ederek ve üretime hazır C# kodu üreterek sınıf tanımlamanın sıkıcı manuel işini ortadan kaldırır.

JSON nesnenizi giriş alanına yapıştırıp dönüştür düğmesine tıklamanız yeterlidir. Araç yapıyı analiz eder, veri türlerini algılar, iç içe nesneleri ve dizileri işler ve uygun özellik türlerine, serileştirme için Newtonsoft.Json öznitelikleri ve isteğe bağlı nullable ek açıklamalarına sahip C# sınıfları oluşturur. Oluşturulan kod hemen .NET projenize kopyalanabilir ve Newtonsoft.Json (Json.NET) veya System.Text.Json gibi popüler JSON kütüphaneleri ile kullanılabilir.

Bu, REST API'lerini entegre eden, yapılandırma dosyalarını işleyen veya C#'ta API yanıtlarını deserialize eden geliştirici ler için özellikle yararlıdır. Oluşturulan kod iç içe nesneleri, isteğe bağlı özellikleri ve özel öznitelik eşleştirmelerini destekleyerek framework sürümleri ve modern .NET uygulamalarıyla uyumlu hale getirir.

Sıkça Sorulan Sorular

Kod Uygulaması

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.