问题1:某些情况下产生非标准json数据
UserGroupModel group = new UserGroupModel();
group.id = 9999;
group.users = new ArrayList<>();
group.users2 = new LinkedHashMap<>();
group.users3 = new TreeSet<>();// 如果只有空示例,反序列化时无法解析json
上面的TreeSet为空示例上,序列化出来的数组是:...users3:TreeSet[]。。。进行反序列化时,就会提示解析出错(感觉这个格式也不像json标准,别的框架不好解析...)。
问题2:有些集合进行类型表示(例List),或者表示不合理。
像上面这样:TreeSet[],应该是不合理,应该是非标准json结构;另外,像上面的 users 不会有类型标注,如果 users = new LinkedList() ,就无法还原类型。(类型也不够全,像Queue,就不能玩了...)
问题3:反序列化时,有时不能根据json申明的@type来。
像上面的代码,users2 反序列化回来后变成了:HashMap。这算应该算是有问题。
创意想法:为集合添加友好的数据类型
目前用: {'@type':'x.x.x'} 来为一个对象添加类型申明;;;可以考虑使用:[{'@type':'x.x.x'},[]] 为集合添加类型申明(后面的[]存放真实的数组数据)。
另外,建议如果有@type 申请的,优先用@type类型。
因为正在重构一个自己多年前的json框架(新命名:snack3)
从 fastjson 这儿吸收了不少营养,特来反馈一下
6条答案
按热度按时间gwbalxhn1#
提供下 UserGroupModel
wsewodh22#
模型
测试数据
mwngjboj3#
@noear
pcrecxhr4#
@timandy
但是,仍然有问题。。。如果有申明 @type 的,还是应该要优化用 clazz.newInstance() (解决自定义的一些Map实现)。。。就是要优化用 @type 申明的类型。
dl5txlt95#
@timandy
另外,希望考虑为 [] 数据,添加类型申明。。。即我提的那个创意想法。
brc7rcf06#
序列化的时候没有生成
@type