JSON to C# Class
JSONをプロパティ、データアノテーション、Newtonsoftアトリビュート付きのC# POCOクラス定義に変換します。
このツールについて
JSON to C# Classは、JSONデータ構造をC# POCO(Plain Old CLR Object)クラス定義に自動的に変換する開発ツールです。.NETアプリケーション内のAPI、設定ファイル、または外部データソースを扱う場合、強く型指定されたC#クラスを持つことで型安全性が確保され、Visual Studioでのインテリセンスオートコンプリートが有効になります。このツールはJSONを分析して本番環境対応のC#コードを生成することで、クラス定義の退屈な手作業を排除します。
JSONオブジェクトを入力フィールドに貼り付けて、変換ボタンをクリックするだけです。ツールが構造を分析し、データ型を検出し、ネストされたオブジェクトと配列を処理し、適切なプロパティ型、シリアライゼーション用のNewtonsoft.Json属性、およびオプションのnullableアノテーション付きのC#クラスを生成します。生成されたクラスは.NETプロジェクトにすぐにコピーして使用でき、Newtonsoft.Json(Json.NET)またはSystem.Text.Jsonなどの一般的なJSONライブラリと互換性があります。
これは特にREST API統合、設定ファイル処理、またはC#でのAPI応答のデシリアライズを行う開発者に役立ちます。生成されたコードはネストされたオブジェクト、オプションのプロパティ、カスタム属性マッピングをサポートし、フレームワークバージョンと最新の.NETアプリケーションの両方と互換性があります。
よくある質問
コード実装
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.