You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历JSON Schema对象并提取字段生成对应Java类代码

基于JSON Schema批量生成Java类的实现方案

核心思路

你关心的遍历提取字段逻辑非常好实现:把JSON文件解析为字典对象后,直接取properties节点,遍历该节点的所有键值对就能拿到属性名、对应的type值,再映射为Java类型后按模板拼接代码即可。

类型映射规则

先约定JSON Schema类型和Java类型的对应关系,你可以按需调整:

  • string → String
  • number → Integer(如果有浮点需求可改为Double)
  • boolean → Boolean
  • integer → Long

可直接运行的Python脚本

Python自带JSON解析库,不需要额外安装复杂依赖,脚本如下:

import os
import json

# 类型映射表,可按需修改
TYPE_MAPPING = {
    "string": "String",
    "number": "Integer",
    "integer": "Long",
    "boolean": "Boolean"
}

# 配置路径
SCHEMA_FOLDER = "./schemas"
OUTPUT_FOLDER = "./output"

if not os.path.exists(OUTPUT_FOLDER):
    os.makedirs(OUTPUT_FOLDER)

# 遍历所有JSON文件
for filename in os.listdir(SCHEMA_FOLDER):
    if not filename.endswith(".json"):
        continue
    # 读取并解析JSON
    file_path = os.path.join(SCHEMA_FOLDER, filename)
    with open(file_path, "r", encoding="utf-8") as f:
        schema_data = json.load(f)
    
    properties = schema_data.get("properties", {})
    # 类名默认取JSON文件名去掉后缀,你也可以自定义为固定值比如Whatever
    class_name = filename.replace(".json", "").capitalize()
    
    # 拼接属性代码
    field_lines = []
    param_list = []
    for prop_name, prop_info in properties.items():
        json_type = prop_info.get("type")
        java_type = TYPE_MAPPING.get(json_type, "Object")
        # 生成属性定义
        field_lines.append(f"  @JsonProperty\n  public {java_type} {prop_name};\n")
        # 生成构造函数参数
        param_list.append(f"{java_type} {prop_name}")
    
    # 拼接完整类代码
    class_code = f"public static class {class_name} {{\n"
    class_code += "\n".join(field_lines) + "\n"
    class_code += f"  public {class_name}() {{}}\n\n"
    class_code += f"  public {class_name}({', '.join(param_list)}){{\n"
    # 如果你要保留你示例中的this(...)写法,把下面的循环替换为`    this({', '.join([p.split(' ')[1] for p in param_list])});`即可
    for param in param_list:
        prop_name = param.split(" ")[1]
        class_code += f"    this.{prop_name} = {prop_name};\n"
    class_code += "  }\n}"
    
    # 输出到Java文件
    output_file = os.path.join(OUTPUT_FOLDER, f"{class_name}.java")
    with open(output_file, "w", encoding="utf-8") as f:
        f.write(class_code)

使用方法

  1. 把所有待处理的JSON Schema文件放在同一个文件夹下,命名为schemas
  2. 把上述脚本保存为generate_java.py,和schemas文件夹放在同一目录
  3. 命令行运行python generate_java.py
  4. 生成的Java类会自动保存在同级的output文件夹下

注意事项

  • 请先确保你的JSON Schema语法正确,你给出的示例JSON中prop2结尾少了逗号,运行前需修正
  • 如果需要调整Java类的模板(比如加getter/setter、修改注解等),直接修改脚本中的代码拼接逻辑即可

内容的提问来源于stack exchange,提问作者st123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:39:02