Jfinal2.1,还是fastjson的renderJson的问题

灵溪小鱼 发布于 2016/01/08 20:59
阅读 968
收藏 0

@JFinal

首先2.1在JfinalJson下完全正常(之前2.0里是有fastjson包的,说明原先2.0用的是fastjson)。正确具体效果如下:

这是典型的jquery easyui的Tree的表格。renderJson这个Bean生成的,get/set方法都有:

Service对Tree赋值也没什么特殊之处:

上面的情况在2.1的jfinaljson和2.0的fastjson下都正常。当我换在2.1的fastjson后,效果就变这样了。。。

很明显,Tree的iconCls和pid值没有被转化为json。。。这是为什么。。。

加载中
1
JFinal
JFinal

     jackson 与 fastjson 是通过 getter 方法来转化为 json 数据的,如果仅仅是将 key value 值 put 进 model中,但实际上它的 getter 方法不存在,是无法转换的。

    这种情况临时用 jfinal json转一下就行了:

renderJson(JFinalJson.getJson().toJson(target));



0
JFinal
JFinal
   在 Tree 的 getIconCls() 与 getPid() 方法中设置一个断点,转换的时候看这里是否被调用了,如果被调用,看取到的值是什么?
0
灵溪小鱼
灵溪小鱼

引用来自“JFinal”的评论

   在 Tree 的 getIconCls() 与 getPid() 方法中设置一个断点,转换的时候看这里是否被调用了,如果被调用,看取到的值是什么?
马上试,稍等
0
灵溪小鱼
灵溪小鱼

引用来自“JFinal”的评论

   在 Tree 的 getIconCls() 与 getPid() 方法中设置一个断点,转换的时候看这里是否被调用了,如果被调用,看取到的值是什么?

抱歉!看错了。是直接renderJson baseModel造成的!知道这个问题是怎么回事了,这2个值是model put进去了,你今天在群里下午说的没get方法不行。

但是如果出现这种情况我要怎么解决呢。。。

0
灵溪小鱼
灵溪小鱼

引用来自“JFinal”的评论

   在 Tree 的 getIconCls() 与 getPid() 方法中设置一个断点,转换的时候看这里是否被调用了,如果被调用,看取到的值是什么?
Resource是BaseBean是没问题的,有get方法的值都有renderJson出去,如果我想另外put些值进去,fastjson没法正确将我的put的值生成json
0
灵溪小鱼
灵溪小鱼

引用来自“JFinal”的评论

     jackson 与 fastjson 是通过 getter 方法来转化为 json 数据的,如果仅仅是将 key value 值 put 进 model中,但实际上它的 getter 方法不存在,是无法转换的。

    这种情况临时用 jfinal json转一下就行了:

renderJson(JFinalJson.getJson().toJson(target));



有没办法在2.1让fastjson和jackson直接能支持put进去的值。。2.0是支持的啊,那之后如果出现put的情况我相当于都要用JfinalJson转化一下咯?
JFinal
JFinal
回复 @灵溪小鱼 : 根本原因就是fastjson依赖于针对于字段名的 getter 方法来转换 json。而 jfinal json 不依赖,随便 put 去的数据都可以转换
灵溪小鱼
灵溪小鱼
回复 @JFinal : 好吧,项目本来也没有依赖fastjson和jackson的情况,本来也是用的JfinalJson,只是好奇fastjson为什么会出问题
JFinal
JFinal
直接切到 jfinal 的 json 支持吧,me.setDefaultJsonFactory(JFinalJsonFactory.me()); fastjson 与 jackson 依赖于getter 方法
返回顶部
顶部