# Doc2Json
**Repository Path**: aFang-share/doc2-json
## Basic Information
- **Project Name**: Doc2Json
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-24
- **Last Updated**: 2025-10-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Doc2Json - 智能Java代码注释解析器
[](https://spring.io/projects/spring-boot)
[](https://openjdk.java.net/projects/jdk17/)
[](http://www.apache.org/licenses/LICENSE-2.0)
🚀 **零注解开发** - 智能解析Java代码注释,自动生成JSON Schema和OpenAPI文档
## ✨ 核心特性
- 🎯 **零注解开发** - 无需添加Swagger等注解,直接从JavaDoc注释自动生成文档
- 🧠 **智能解析** - 自动解析JavaDoc注释和方法签名,提取丰富的文档信息
- 📄 **双输出** - 同时生成JSON Schema和OpenAPI文档,满足不同需求
- ⚡ **Spring Boot集成** - 无缝集成Spring生态,开箱即用,支持自动配置
- 🎨 **类型映射** - 完整的Java类型到JSON Schema类型映射
- ✅ **验证约束** - 自动解析JSR-303验证注解到Schema约束
- 🌐 **RESTful API** - 提供完整的REST API接口,支持在线生成文档
## 🚀 快速开始
### 添加依赖
在你的Spring Boot项目中添加Doc2Json依赖:
```xml
com.example
Doc2Json
1.0.0
```
### 基本配置
在`application.properties`或`application.yml`中配置:
```properties
# 启用Doc2Json
doc2json.enabled=true
# 设置要扫描的基础包
doc2json.base-packages=com.example.yourpackage
# 自动生成文档(可选)
doc2json.auto-generate=true
# OpenAPI文档配置
doc2json.openapi.title=我的API文档
doc2json.openapi.description=自动生成的API文档
doc2json.openapi.version=1.0.0
```
### 示例代码
只需编写标准的Java代码和JavaDoc注释:
```java
/**
* 用户实体类
* 表示系统中的用户信息
*
* @author Doc2Json
* @since 1.0.0
*/
public class User {
/**
* 用户ID,唯一标识符
* 系统自动生成的唯一ID
*/
private Long id;
/**
* 用户名,登录时使用
* 长度限制:3-50个字符,只能包含字母、数字和下划线
*/
private String username;
/**
* 电子邮箱地址
* 用于接收通知和找回密码
* 格式:标准的电子邮件格式
*/
private String email;
// 构造函数、getter、setter...
}
```
控制器示例:
```java
/**
* 用户管理控制器
* 提供用户的增删改查功能
*/
@RestController
@RequestMapping("/api/users")
public class UserController {
/**
* 获取所有用户信息
* 返回系统中的所有用户列表
*
* @return 用户列表
*/
@GetMapping
public List getAllUsers() {
// 实现逻辑
}
/**
* 创建新用户
* 创建一个新的用户账户
*
* @param user 用户信息,请求体中的JSON对象
* @return 创建成功的用户信息
*/
@PostMapping
public User createUser(@RequestBody CreateUserRequest user) {
// 实现逻辑
}
}
```
### 启动应用
启动你的Spring Boot应用后,访问:
- **文档首页**: http://localhost:8080
- **生成完整文档**: http://localhost:8080/api/doc2json/generate
- **生成OpenAPI**: http://localhost:8080/api/doc2json/openapi
- **健康检查**: http://localhost:8080/api/doc2json/health
## 📚 API接口
### 核心接口
| 接口 | 方法 | 描述 |
|-----|------|------|
| `/api/doc2json/generate` | GET | 生成完整文档(JSON Schema + OpenAPI) |
| `/api/doc2json/openapi` | GET | 生成OpenAPI 3.0文档 |
| `/api/doc2json/schema/{className}` | GET | 为指定类生成JSON Schema |
| `/api/doc2json/classes` | GET | 获取所有解析的类信息 |
| `/api/doc2json/refresh` | POST | 刷新文档缓存 |
| `/api/doc2json/health` | GET | 服务健康检查 |
### 参数说明
- `packages`: 要扫描的包路径,多个用逗号分隔,默认为`com.example`
- `className`: 类的完整限定名,支持URL编码
## 🏗️ 架构设计
```
┌─────────────────────────────────────────────────────────────┐
│ Doc2Json架构 │
├─────────────────────────────────────────────────────────────┤
│ Web层 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Doc2JsonController │ │ Web界面 │ │
│ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 服务层 │
│ ┌─────────────────┐ │
│ │ Doc2JsonService │ │
│ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 生成器层 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │JsonSchemaGenerator│ │OpenApiGenerator│ │
│ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 解析器层 │
│ ┌─────────────────┐ │
│ │ JavaDocParser │ │
│ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 模型层 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ ClassDocInfo │ │FieldDocInfo │ │
│ └─────────────────┘ └─────────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │MethodDocInfo │ │ParameterDocInfo│ │
│ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## ⚙️ 配置选项
### 完整配置示例
```yaml
doc2json:
# 是否启用
enabled: true
# 扫描包路径
base-packages:
- com.example.controller
- com.example.model
# 自动生成策略
auto-generate: true
strategy: ON_STARTUP # ON_STARTUP, ON_DEMAND, SCHEDULED
# 输出配置
output:
to-file: true
directory: ./docs
pretty-print: true
# 过滤配置
filter:
controllers-only: false
include-private-methods: false
exclude-packages:
- com.example.test
exclude-class-suffixes:
- Test
- Tests
# OpenAPI配置
openapi:
title: API文档
description: 自动生成的API文档
version: 1.0.0
server-url: http://localhost:8080
contact-email: support@example.com
# JSON Schema配置
json-schema:
include-metadata: true
include-validation-constraints: true
include-examples: true
```
## 🎯 类型映射
Doc2Json支持完整的Java类型到JSON Schema类型映射:
| Java类型 | JSON Schema类型 | 说明 |
|---------|---------------|------|
| `int`, `Integer`, `long`, `Long` | `integer` | 整数类型 |
| `double`, `Double`, `float`, `Float` | `number` | 数值类型 |
| `String` | `string` | 字符串类型 |
| `boolean`, `Boolean` | `boolean` | 布尔类型 |
| `Date`, `LocalDateTime`, `LocalDate` | `string` | 日期时间(带format) |
| `List`, `T[]`, `Set` | `array` | 数组/集合类型 |
| 自定义类 | `object` | 对象类型 |
| 枚举类型 | `string` | 枚举值 |
## ✅ 验证约束支持
Doc2Json自动解析常见的JSR-303验证注解:
| 注解 | Schema约束 |
|------|------------|
| `@NotNull`, `@NotEmpty` | `required: true` |
| `@Size(min=3, max=50)` | `minLength: 3, maxLength: 50` |
| `@Min(18)`, `@Max(120)` | `minimum: 18, maximum: 120` |
| `@Pattern(regexp="...")` | `pattern: "..."` |
| `@Email` | `format: "email"` |
| `@Positive`, `@Negative` | 约束范围 |
## 🔧 高级用法
### 自定义解析器
```java
@Component
public class CustomJavaDocParser implements JavaDocParser {
// 实现自定义解析逻辑
}
```
### 自定义生成器
```java
@Component
public class CustomJsonSchemaGenerator implements JsonSchemaGenerator {
// 实现自定义生成逻辑
}
```
### 编程式使用
```java
@Autowired
private Doc2JsonService doc2JsonService;
// 生成文档
Map docs = doc2JsonService.generateDocumentation("com.example");
// 生成单个类的Schema
String schema = doc2JsonService.generateJsonSchema(User.class);
// 生成OpenAPI文档
String openApi = doc2JsonService.generateOpenApiDocumentation("com.example");
```
## 🧪 测试
运行测试:
```bash
mvn test
```
运行特定测试:
```bash
mvn test -Dtest=Doc2JsonIntegrationTest
```
## 📈 性能优化
- **缓存机制**: 支持类信息缓存,避免重复解析
- **增量更新**: 支持增量更新文档,只重新解析变更的类
- **异步生成**: 支持异步生成文档,提高响应速度
## 🤝 贡献
欢迎提交Issue和Pull Request!
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交变更 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 许可证。
## 🙏 致谢
- [JavaParser](https://javaparser.org/) - 用于解析Java源码
- [Spring Boot](https://spring.io/projects/spring-boot) - 提供自动配置支持
- [Jackson](https://github.com/FasterXML/jackson) - JSON处理
- [Reflections](https://github.com/ronmamo/reflections) - 反射工具
## 📞 联系方式
- 项目主页: https://gitee.com/aFang-share/doc2-json.git
- 问题反馈: https://gitee.com/aFang-share/doc2-json.git/issues
- 邮箱: aFang-share@qq.com
---
⭐ 如果这个项目对你有帮助,请给我们一个Star!