diff --git a/baogutang-admin/src/main/resources/templates/json-parse.html b/baogutang-admin/src/main/resources/templates/json-parse.html
index 04e8067..1b58e18 100644
--- a/baogutang-admin/src/main/resources/templates/json-parse.html
+++ b/baogutang-admin/src/main/resources/templates/json-parse.html
@@ -75,6 +75,8 @@
+
+
@@ -110,6 +112,8 @@
var shown_flag = false;
var compress_flag = false;
var xml_text;
+ var toJava_flag = false;
+ var deepParse_flag = false;
$('.tip').tooltip();
function init() {
@@ -117,13 +121,33 @@
zip_flag = false;
shown_flag = false;
compress_flag = false;
+ // toJava_flag 不在这里重置,由keyup事件单独处理
renderLine();
$('.xml').attr('style', 'color:#999;');
$('.zip').attr('style', 'color:#999;');
}
$('#json-src').keyup(function () {
- init();
+ // 如果当前在Java模式,先退出
+ if (toJava_flag) {
+ toJava_flag = false;
+ $('.toJava').attr('style', 'color:#999;');
+ }
+
+ // 如果当前在深度解析模式,先退出
+ if (deepParse_flag) {
+ deepParse_flag = false;
+ $('.deepParse').attr('style', 'color:#999;');
+ }
+
+ // 重置其他标志位
+ xml_flag = false;
+ zip_flag = false;
+ shown_flag = false;
+ compress_flag = false;
+ $('.xml').attr('style', 'color:#999;');
+ $('.zip').attr('style', 'color:#999;');
+
var content = $.trim($(this).val());
var result = '';
if (content != '') {
@@ -339,6 +363,276 @@
message: '复制失败,请手动复制'
});
});
+
+ // JSON转Java对象功能
+ $('.toJava').click(function () {
+ if (toJava_flag) {
+ $('#json-src').keyup();
+ } else {
+ if (!current_json) {
+ $.message && $.message({
+ type: 'error',
+ message: '请先输入有效的JSON数据'
+ });
+ return;
+ }
+ try {
+ var javaCode = json2Java(current_json, 'RootObject');
+ var formattedCode = formatJavaCode(javaCode);
+ $('#json-target').html(formattedCode);
+ toJava_flag = true;
+ xml_flag = false;
+ zip_flag = false;
+ $(this).attr('style', 'color:#15b374;');
+ } catch (e) {
+ $.message && $.message({
+ type: 'error',
+ message: '转换失败:' + e.message
+ });
+ }
+ }
+ });
+
+ // JSON转Java类的核心函数
+ function json2Java(json, className) {
+ var classes = [];
+ var mainClass = generateJavaClass(json, className, classes);
+
+ // 将主类放在最前面
+ var result = mainClass;
+
+ // 添加其他嵌套类
+ if (classes.length > 0) {
+ result += '\n' + classes.join('\n');
+ }
+
+ return result;
+ }
+
+ // 生成Java类代码
+ function generateJavaClass(obj, className, classes) {
+ if (typeof obj !== 'object' || obj === null) {
+ return '';
+ }
+
+ var fields = [];
+ var imports = new Set();
+ imports.add('import lombok.Data;');
+
+ if (Array.isArray(obj)) {
+ // 如果是数组,取第一个元素分析
+ if (obj.length > 0) {
+ return generateJavaClass(obj[0], className, classes);
+ }
+ return '';
+ }
+
+ for (var key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ var value = obj[key];
+ var fieldType = getJavaType(value, key, classes);
+
+ // 处理字段名(驼峰命名)
+ var fieldName = toCamelCase(key);
+
+ // 添加字段注释(如果原key和驼峰命名不同)
+ if (key !== fieldName) {
+ imports.add('import com.fasterxml.jackson.annotation.JsonProperty;');
+ fields.push(' @JsonProperty("' + key + '")');
+ }
+
+ fields.push(' private ' + fieldType + ' ' + fieldName + ';');
+ }
+ }
+
+ var importStr = Array.from(imports).join('\n');
+ var classCode = importStr + '\n\n';
+ classCode += '@Data\n';
+ classCode += 'public class ' + className + ' {\n';
+ classCode += fields.join('\n');
+ classCode += '\n}\n';
+
+ return classCode;
+ }
+
+ // 获取Java类型
+ function getJavaType(value, key, classes) {
+ if (value === null || value === undefined) {
+ return 'Object';
+ }
+
+ var type = typeof value;
+
+ if (type === 'string') {
+ return 'String';
+ } else if (type === 'number') {
+ return Number.isInteger(value) ? 'Integer' : 'Double';
+ } else if (type === 'boolean') {
+ return 'Boolean';
+ } else if (Array.isArray(value)) {
+ if (value.length === 0) {
+ return 'List