fastjson前后端ajax交互传List对象
·
背景
记一次很难受的功能实现
跑了10年左右的老项目,看一眼配置就知道是老ERP了,这次由于新增功能,是的,10年了还有功能要增加。要从前台批量写n多数据传给后端,我第一反应就是在js造对象,ajax传对象,然而,上边要求尽量不要改配置,尊崇以前的写法…保证客户那边的稳定性,开口就是老产品了,我竟然真的乖乖的研究起怎么不用对象封装实现动态数据的传输。迷瞪了下抽了根烟,难道要我在ajax的data写if、else?不不不,作为一个没见过世面的码农,先不说能不能写,就算能,也果断拒绝,于是,又干起了左手js右手java的买卖。
正题-配置
想通了之后就简单多了
先搞json包,刚开始下载jackson,感觉太麻烦,搞半天jar包才勉强启动不报错,所以,毅然决然maven下了fastjson,下边是mvc的配置
<!-- 启用默认配置 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 配置Fastjson支持 -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value>
</list>
</property>
<property name="features">
<list>
<value>WriteMapNullValue</value>
<value>QuoteFieldNames</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
前端
构造list对象,ajax传值
var list = [];
//循环push
list.push({'sj1':变量1,"sj2":变量2,"sj3":变量3});
...
//ajax传值
data:JSON.stringify(list);
值的效果:
[{"sj1":变量1,"sj2":变量2,"sj3":变量3},
{"sj1":变量1,"sj2":变量2,"sj3":变量3},
{"sj1":变量1,"sj2":变量2,"sj3":变量3}...]
之前我js是这么做的:new了一个map,扔到list,console出来的是空,就是说JSON.stringify()转出来是空的,原因附在下边了,一看就明白了。
后端
用@RequestBody注解标识 封装传过来的对象
public String saveData(@RequestBody List<Map<String,String>> dataList){
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)