JSON to C# Class
将JSON转换为C# POCO类定义,支持属性、数据注解和Newtonsoft属性。
关于此工具
JSON to C# Class 是一个开发者工具,可自动将 JSON 数据结构转换为 C# POCO(Plain Old CLR Object)类定义。在 .NET 应用程序中处理 API、配置文件或外部数据源时,拥有强类型的 C# 类可确保类型安全并在 Visual Studio 中启用 IntelliSense 自动完成。该工具通过分析你的 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.