关于JFinal的Json工具输出结果不正确的问题

两个问题,应该属于同一问题

  1.  设置JFinalJsonFactory时,JsonKit输出不了model里面的成员变量

  2.  model.toJson不能输出model内的成员变量


描述如下:

首先

me.setJsonFactory(new JFinalJsonFactory());

然后

Model里面放了一个成员变量(不是BaseModel) ,并且设置了 get set

private List<Discuss> childList;

再然后,查询,给childList赋值

之后再用JsonKit转成String输出

就发现不能打印childList的值,但是使用fastjson的JSON.toJSONString()就可以输出

如下图

QQ图片20201209110647.png

如果设置了

me.setJsonFactory(new FastJsonFactory());

那么JsonKit就正常打印,但是model的toJson方法还是不会输出childList,如下图

Snipaste_2020-12-09_11-17-31.jpg

这就会导致我返回String时,不能直接使用  model.toJson() 返回


PS:如果是我的JsonKit食用方法不正确,请指出


评论区

JFinal

2020-12-09 11:37

配置 JFinalJsonFactory 时,使用的是 JFinalJson 来将对象转 json string。
而 JFinalJson 转 json 不会使用 getter 方法,所以你新增的 getter 是无用的。

配置 FastJsonFactory 时,使用的是 FastJson 来将对象转 json string。
而 FastJson 是使用的 getter 方法拿到数据并转换的。

文档中很详细说明过这个问题

JFinal

2020-12-09 11:38

JsonKit 只是转调一下你通过 me.setJsonFactory(...) 配置好的转换工具

macaque

2020-12-09 11:53

试下这么做https://jfinal.com/share/2129