通过Enjoy表达式,实现反向生成Java Bean

我有一个场景,需要利用enjoy表达式实现以下两种结构的互相转换,还请有想法的分享一下思路

// 结构一
class A {
	String name;
	Integer age;
	String[] strArr;
	B b;
}

class B {
	String first;
	String second;
}
// 结构二
[
	{
		"value":"张三",
		"expression":"#(name)",
	},
	{
		"value":"12",
		"expression":"#(age)",
	},
	{
		"value":"a",
		"expression":"#(strArr[0])",
	},
	{
		"value":"b",
		"expression":"#(strArr[1])",
	},
	{
		"value":"第一",
		"expression":"#(b.first)"
	}
	{
		"value":"第二",
		"expression":"#(b.second)"
	}
]


评论区

developer4

2021-03-01 12:01

说错了,是实现Class A 和 json的互相转换

JFinal

2021-03-01 12:26

可以做成指令,也可以做成 shared method,以下是shared method 的用法形式:
#( toJson( classAObject) )
#( parseJson(classAString) )

以下给出 toJson shared method 的简单实现:
public class SharedLib {
public String toJson( Object obj ) {
return JsonKit.toJson(obj);
}
}

最后,要配置一下:
configEngine(Engine me) {
me.addSharedMethod(SharedLib.class);
}

developer4

2021-03-01 12:34

@JFinal 这里我表达不对,我是想实现Class A的实例 到 结构二的互相转换,根据结构二可以得到ClassA的一个实例,同样拿到一个实例也能转成结构二的格式

JFinal

2021-03-01 12:42

@developer4 反射获取 A 中的所有属性名,然后再生成为你需要的模板内容就可以

反向生成可能有点麻烦,得多写点代码,先实现正向生成吧

热门反馈

扫码入社