2020-11-03 11:12

@JFinal 同样的异常还是出现
public void load(String path) {
DruidPlugin dp = new DruidPlugin("jdbc:sqlite:"+path, null, null);
dp.setDriverClass(drver);
ActiveRecordPlugin arp = new ActiveRecordPlugin(sqlite,dp);
arp.addMapping("t_test", "id", TestConfig.class);
dp.start();
arp.start();
}

2020-11-03 11:01

@JFinal 我使用的是DruidDataSource,它没有start方法

2020-09-01 16:52

@杜福忠 如果把Test类的内部的那个集合换成Map、Set、数组、Jfinal的Record或Model、自定义类型的任意一个。

JFinalJsonKit.iteratorToJson(new ArrayIterator(value.getList()), depth, ret);这里的方法的第一个参数会有什么改动么?

2020-09-01 15:47

@杜福忠 你还不明白的话,那你看看这个问题帖子描述的问题吧 https://segmentfault.com/q/1010000023844864?_ea=62123639,虽然说的是用Gson如何实现。但如果换成Jfinal的json要如何处理?

2020-09-01 15:26

@杜福忠 还有一个问题,如果自定义类型的内部不一定是集合,而是Map,Record,Model,Set,list,数组,自定义类型的任意一种,当序列化时,要当成Map/Record/Model/Set/List/数组/自定义类型(获取内部子对象在序列化)。

2020-09-01 15:20

@杜福忠

那你能在详细示范一下么?我不太明白

2020-09-01 14:41

@杜福忠 不好意思,你可能搞错了,我的意思是拦截指定类型的值,在拦截方法里,创建一个新对象,这个新对象可能跟拦截的对象不是一个类型,而且新对象不一定是String类型)。这个新对象就用作拦截方法的返回值。

举个例子把,比如Model,Record。JfinalJSon对这两个类型的对象序列化的效果跟序列化Map是一样的,也就是把Model,Record当成Map处理了(在序列化封装方法的某个过程获取内部包装的Map对象再进行序列化)。

假设有一个自定义类型的类,它的内部有一个集合,我想配置对该类的实例序列化为对内部的集合的序列化效果,把这个对象当成集合进行序列化(获取内部的集合再进行序列化)。就像JfinalJson对Model,Record的序列化效果一样

2020-09-01 13:04

@杜福忠 好吧,我的表述有问题,那我换个说法,叫类型序列化拦截器把,比如我有个自定义类型,我要在序列化检测到该类型的时候,就进行拦截,拦截方法返回类型是Object类型,我随便在返回值里填什么。方法结束后,序列化的对象就会变成了由拦截器拦截后返回的对象了,序列化过程中,拦截所有在序列化中碰到的指定拦截类型。

假设我要对自定义类型进行拦截,在拦截方法里,直接创建一个List对象,并返回这个List对象。这样就实现了“自定义类型当成List进行序列化”。

2020-09-01 09:17

@杜福忠 你发这个怎么用啊。我在if逻辑代码里里直接把返回值写成字符串常量都报错。反而是我找到的JFinalJson.addToJson可以,不过这个处理比较简单。虽然解决了,但是如果复杂一点,我要把某个自定义类型当成List进行序列化的这个要怎么操作(我自定义方法把自定义类型变成List,然后把List进行序列化)

2020-08-31 08:37

@杜福忠 jfinal自带的JfinalSON能不能像gson那样为某个类型单独配置一个序列化的方式么?

2020-08-31 08:30

@杜福忠 另外还有嵌套情况,比如Map有List,List里有Map,里面都有java8日期对象,而且可能有两个不同类型的,例如LocalDate,LocalTime。把所有可能的情况都给考虑到if逻辑里去。