Jersey Restful WebService 接收 JSON 数组 对象
为什么80%的码农都做不了架构师?>>>
在使用 jersey restful 时 前端ajax post 数据到 服务器端,接收对象为null,测试代码
web:
var ts = [];//模拟两条数据for (var i = 0; i < 2; i++) {ts.push({name:'name'+i,id:i});}var testData = {aa:ts};printLog('log',testData);$.rate.post({url: hostUrl + '/xxx/xxx/xxxx/queryDepartmentsAll',data:testData,cache: false,objRest:false,success: function(data) {console.log(data);}});
post data:
--- log ---
{"aa":[{"name":"name0","id":0},{"name":"name1","id":1}]}
server:
/*** 查询所有科室* @return* @throws Exception*/@POST@Path("/queryDepartmentsAll")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_FORM_URLENCODED)public String queryDepartmentsAllTest(@Form(prefix="aa")List<TestBean> beans) throws Exception { loggin.info(beans);return "test...";}
TestBean:
@XmlRootElement
public class TestBean {@FormParam("name")private String name;@FormParam("id")private Integer id;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}}
有请 "debug " 出场.......
ajax发出请求后 会经过 HttpServletInputMessage 处理,获取表单带的参数
调用getDecodedFormParameters,会把 url中的参数和表单参数合并,放入MultivaluedMapImpl 对象中
MultivaluedMapImpl点toString - --> {aa[1][id]=[1], aa[0][name]=[name0], aa[0][id]=[0], aa[1][name]=[name1]}
往下走,到了ListFormInjector
form 注入器有两种,List,Map
最终走到了PrefixedMultivaluedMap 类
对象注入的方式是通过“变量[0].属性” 注入的,而前段传进的值是
解决办法:
把花括号改成“ .” 就可以注入了
修改后:
aa[0].id=0
aa[0].name=name0
aa[1].id=1
aa[1].name=name1
后端接收到了
====================================================================
jquery ajax data 如果对象中包涵数组,是使用 jQuery.param 函数格式化,所以导致 传输的数据格式不正确
jQuery.param = function( a, traditional ) {var prefix,s = [],add = function( key, value ) {// If value is a function, invoke it and return its valuevalue = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );};// Set traditional to true for jQuery <= 1.3.2 behavior.if ( traditional === undefined ) {traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;}// If an array was passed in, assume that it is an array of form elements.if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {// Serialize the form elementsjQuery.each( a, function() {add( this.name, this.value );});} else {// If traditional, encode the "old" way (the way 1.3.2 or older// did it), otherwise encode params recursively.for ( prefix in a ) {buildParams( prefix, a[ prefix ], traditional, add );}}// Return the resulting serializationreturn s.join( "&" ).replace( r20, "+" );
};
可以在请求前把data类型先处理,demo js
var datas = {};
for (var a in settings.data) {if ($.isArray(settings.data[a])) {var isObject = $.isPlainObject(settings.data[a][0]);//如果数组里是对象if (isObject) {for (var i = 0, ds = settings.data[a], len = ds.length; i < len; ++i) {for (var b in ds[i]) {datas[a + '[' + i + '].' + b] = ds[i][b];}}}} else {//datas[a] = settings.data[a];}
}
转载于:https://my.oschina.net/shking/blog/691366
Jersey Restful WebService 接收 JSON 数组 对象相关推荐
- SpringMVC 之@RequestBody 接收Json数组对象
1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台 ...
- SpringMVC接收json数组对象
最近帮一个妹子解决一个需求,就是前台使用ajax传三个相同的对象,再加一个form表单对象.然后遇到各种问题,终于解决了,@RequestBody接收Json对象字符串 以前,一直以为在Spring ...
- SpringMVC @RequestBody 接收Json数组对象
@RequestMapping(value="/signIn",method=RequestMethod.POST)public int saveUser(@RequestBody ...
- android 接收js对象数组,java怎么接收js 数组对象数组对象
java怎么接收js 数组对象数组对象 [2021-02-04 22:25:34] 简介: php数组转js数组对象的方法:首先获取[$arr]数组:然后使用函数[json_encode()]将数组 ...
- lombok 的bug?lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败
大家好,我是烤鸭: lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败. 环境版本: spring 5.x ...
- json vue 对象转数组_vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
本文实例讲述了vue.js基于v-for实现批量渲染 json数组对象列表数据.分享给大家供大家参考,具体如下: vuejs的出现减轻了对dom的直接操作,同时它提供的 v-for 渲染列表数据也给我 ...
- 订单 图片(一对多关系),地址保存在一个字段中(Json数组对象格式)
订单---->图片(一对多关系),地址保存在一个字段中(Json数组对象格式) 1.前端列表动态添加: jsp:<form id="postForm" method=& ...
- java接收json数组_后端如何接收json数组
如何接受json数组 这里用到了Hutool的java工具类库,这是类库地址:www.hutool.cn/docs/#/,有需要的可以自己参考文档集成到自己的项目里,比较方便,种类也比较齐全. 使用J ...
- java解析json数组对象_JAVA中快速解析JSON对象里包含的JSON数组
例如现在有这样一个Json String Value = {"data":[{"school_name":"西北农林科技大学"," ...
最新文章
- BC547 晶体管初步测试
- 用 Python 和 OpenCV 检测和跟踪运动对象
- (chap7 确保WEB安全的HTTPS) HTTPS加密
- 第二十五天 how can I 坚持
- 如何提高自身监控系统的能力?
- [蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)
- MySQL流浪记(三)—— Linux安装MySQL数据库5.7.30(亲测有效3分钟即可)
- VS2003创建动态库的一点笔记
- php 记录报错,php报错自己记录
- 将ShaderToy中的Shader搬运到Unity
- 每日新闻丨三大运营商公布5G套餐;华为云领跑中国DevOps云服务市场;致远互联科创板上市...
- 50个免费下载3D模型的站点
- 高效 Windows 工作环境 Java 开发环境搭建
- html语言单个单元格背景颜色,html如何设置表格和单元格的背景颜色
- android9支持的tf卡格式,老手机福音 三星安卓9.0测试存储卡装应用功能
- CH340国产USB转异步串口芯片替代CP2102对比CH340C与CH340G
- java 新浪短链接_新浪t.cn短链接如何生成?网址缩短api接口分享
- java后台将数据导出到Excel表格
- Unity3d优化总结2
- 【SoC FPGA】外设PIO按键点灯
热门文章
- python类带参数_Python函数参数传递机制(超级详细)
- 有没有计算机用户号,刚做的系统怎么有账户-用户帐号系统设计的原则有哪些?...
- java column_@Column注解属性详解
- 浪潮服务器可管理和维护性,专注用户需求,浪潮服务器提供优质高效的产品
- sftp mysql_Linux下搭建SFTP服务器
- layui php ajax分页,layui+thinkphp5.1实现分页(非动态表格)
- jsp:param能不能传递变量_变量、作用域与内存
- cent os7 安装elasticsearch-7.9.3(伪集群)和kibana-7.9.3
- matlab bdir 排序,命令行 - 如何获取按文件夹名称排序的子文件夹及其文件列表
- 原生安卓与html 好坏,安卓非原生 系统体验差别大