jfinal 2.2默认 json 实现暂不支持 json 到 object

用了所有解析JSON的方法,发现都报错。其中有一个给出这个提示,而且说要用Generator生成什么的,我没太看懂,这个Generator需要数据源啊,可我的项目不需要连接数据库,只是想解析一下JSON而已,不知道应该怎么办?

评论区

JFinal

2016-07-20 12:02

json 到具体 Bean 的解析,需要有 setter 方法支持,所以需要 jfinal 2.2 的 Genereator 生成器生成 BaseModel,这个在生成以后就不再需要数据源了,所以与你现在的情况不冲突,建议看一下 jfinal 手册中的生成器相关部分的用法,此外,本站首页有 Generator demo,改一下里面的几个参数就可以开始使用了

JFinal

2016-07-20 12:07

BaseModel 生成完成后,需要使用 FastJson.getJson().parse(...) 这行代码就可以解析了。如果先设置一下 me.setJsonFactor(new FastJsonFactory()),直接使用 JsonKit.parse(...) 或者 Json.getJson().parse(...) 就可以转了

道长

2016-07-20 16:45

@JFinal 我研究明白了,谢谢。实际就是需要一个有setter方法的model,而且JFinal的json只是一个抽象,具体的实现要用第三方的,要setJSONFactory里设置。其实不用Generator生成,手动建一个也可以。

JFinal

2016-07-20 21:34

@道长 没错,将 json 字符串反向解析成 model,需要有 setter 方法的支持,而 fastjson、jackson 这类工具在解析时也都是依赖于 setter 方法的,建议用 Generator 生成,十分方便快捷,而且生成的 setter 在 base model 中,不打扰你的最终 Model,在表结构发生变化时,重新生成不影响你现有的代码

jiaoshuren

2016-07-21 15:54

有一点搞不明白,这个generate在程序运行发布时使用,还是自己开发时,利用提供的工具把需要用的到对象全部生成baseModel呢

jiaoshuren

2016-07-21 15:57

如果是在程序运行过程中,具体是在什么位置,调用generate比较好呢

jiaoshuren

2016-07-21 16:09

@道长 手动建一个的意思,就是直接建一个json对象的MODEL吗?

JFinal

2016-07-21 20:38

@jiaoshuren Generator 在开的时候运行一下就可以,数据库添加表或者表结构有变化的时候,再运行一下便可更新 BaseModel,本站首页有 Generator demo下载,改下几个参数就可以使用了,里面其实就是一个 main 方法转调了 jfinal 中的 Generator而已,实践证明,用起来还是蛮方便的,建议试试

JFinal

2016-07-21 20:40

@jiaoshuren 生成器就是一个带有 main 方法的,可独立运行的 java 文件,这个文件放在哪里都可以,看个人喜好。前面提到的手动建就是自己在 model 中手写 getter setter 方法。下载本站首页的 Generator demo 试用一次就全明白了

道长

2016-07-22 11:20

@jiaoshuren 我来给你解释一下吧,我是这么理解JFinal的Genertor的,如果你的数据库已经建好了,你写代码的时候要操作某张表,就需要建一个对应的Model。而Genertor的作用就是,你把数据源传进去,它自动帮你把所有的表全建好对应的类,用main函数跑一下就可以了。后面你再开发的时候,就可以直接用了。我提的问题里只想解析JSON,并没有数据库,所以可以不用Genertor,手动建一个类就可以,只要有setter方法就行。

jiaoshuren

2016-07-24 12:01

@道长,感谢您的解释,@JFinal感谢提示,已经搞清楚怎么回事了,这个社区有反馈功能真好。不然每次找Jfinal的问题都找不到。

JFinal

2016-07-24 12:11

@jiaoshuren 感谢支持 jfinal 发展

JFinal

2016-07-24 12:13

将 json string 反向解析成 Model,需要 model 具有 setter、getter 方法才可以,用一下 jfinal 官方首页提供的 Generator demo 改一下配置即可为 model 生成 getter、setter。生成完了以后,项目运行时是可以不需要连接数据库的。

liuhx

2016-07-26 21:42

me.setJsonFactor(new FastJsonFactory()); 这段代码在哪配置

liuhx

2016-07-26 21:43

@JFinal 大神 me.setJsonFactor(new FastJsonFactory()); 这段代码在哪配置

JFinal

2016-07-26 23:21

@liuhx 在 YourJFinalConfig extends JFinalConfig 中的 configConstant(Constants me) 方法中配置

liuhx

2016-07-27 00:22

@JFinal 多谢我找到了 但是还是用不了json,我用fastjson 运行后没有报错,但是bean还是空的

liuhx

2016-07-27 07:29

@JFinal 没有问题了。。。一直拿basebean当bean用,刚知道怎么回事

libofei

2017-12-08 20:06

@JFinal 我生成了bean,me.setJsonFactory(new FastJsonFactory());也调用过,但是在调JsonKit.parse一句时卡在这里走不下去了,我json字符串里的属性名跟数据库完全一样。

JFinal

2017-12-08 20:26

@libofei 这就奇怪了,只要配置好 me.setJsonFactory(new FastJsonFactory()); 一定是可以用 JsonKit.parse(...) 方法的

报什么异常没有,此外,查收一下私信,系统发给过你重要信息

libofei

2017-12-08 20:36

@JFinal 什么异常都没有报,就是执行到 JsonKit.parse(...)时无法再走下去,不知什么地方有问题。私信看到,不常用qq,有没有微信群啊

libofei

2017-12-08 21:01

@JFinal 查出来了,是没有加fastjson的包。。。

JFinal

2017-12-08 23:31

@libofei 暂时没有微信群

热门反馈

扫码入社