请问一下嵌套的对象怎么输出json

数据库里面有count这个字段,是一个json数据。

image.png


希望在前端收到的不是一个json 字符串,而是json对象。不知道要怎么搞。



在model中关联了一个新对象。不过,输出的依然是字符串。

image.png


renderJson 难道不是通过get来进行实现的吗?

评论区

JFinal

2019-07-10 10:37

json 转换默认用的 JFinalJson, 只会处理 Model 的 Map attrs 值

如果希望通过 getter 转换,配置一下:
me.setJsonFactory(new FastJsonFactory());

文档中有过说明:
https://www.jfinal.com/doc/12-3

牛打下

2019-07-10 10:45

@JFinal 谢谢您的回答,想请问一下。如果配置了me.setJsonFactory(new FastJsonFactory())会不会对原先的代码造成影响。

JFinal

2019-07-10 11:34

@牛打下 默认转 json 的实现,会严格按字段名来转,如果你原来的字段是驼峰的就没问题

如果你的这个转换是很少出现,可以用下面的方法来做:
String json = FastJson.getJson().toJson(...);
renderJson(json);

也就是说多数情况使用默认的, 少数特殊情况使用指定的方式来转

默认的 JFinalJson 有一个好处:转换不依赖于 getter 方法,那么关联查询得到的字段值,以及 put 方法放入的字段值也会被转换

而 fastjson 的转换严格依赖于 getter 方法,所以无 getter 方法的值是无法转换的

各有利弊,选好默认,然后用好个别情况

我个人的使用习惯是:
1:mysql 中的字段名使用驼峰形式
2:model 生成 getter、setter 方法
3:配置: me.setJsonFactory(new MixedJsonFactory());

这个使用习惯,一是可以保障 JFinalJson、FastJson 在转 json 时的结果是一致的,因为无论是字段名与 getter 方法转出来的都是驼峰了

不仅转出来值是一致的,而且 MixedJson 支持转换 Model.put 进来的值,以及支持关联查询得到的关联表中的值,而这些值是没有 getter 方法的

牛打下

2019-07-10 13:11

好的,感谢詹总

热门反馈

扫码入社