为什么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 数组 对象相关推荐

  1. SpringMVC 之@RequestBody 接收Json数组对象

    1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台 ...

  2. SpringMVC接收json数组对象

    最近帮一个妹子解决一个需求,就是前台使用ajax传三个相同的对象,再加一个form表单对象.然后遇到各种问题,终于解决了,@RequestBody接收Json对象字符串 ​以前,一直以为在Spring ...

  3. SpringMVC @RequestBody 接收Json数组对象

    @RequestMapping(value="/signIn",method=RequestMethod.POST)public int saveUser(@RequestBody ...

  4. android 接收js对象数组,java怎么接收js 数组对象数组对象

    java怎么接收js 数组对象数组对象 [2021-02-04 22:25:34]  简介: php数组转js数组对象的方法:首先获取[$arr]数组:然后使用函数[json_encode()]将数组 ...

  5. lombok 的bug?lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败

    大家好,我是烤鸭:     lombok 导致 springmvc 使用 @RequestBody注解 接收 json数据 对象参数绑定失败.     环境版本:         spring 5.x ...

  6. json vue 对象转数组_vue.js基于v-for实现批量渲染 Json数组对象列表数据示例

    本文实例讲述了vue.js基于v-for实现批量渲染 json数组对象列表数据.分享给大家供大家参考,具体如下: vuejs的出现减轻了对dom的直接操作,同时它提供的 v-for 渲染列表数据也给我 ...

  7. 订单 图片(一对多关系),地址保存在一个字段中(Json数组对象格式)

    订单---->图片(一对多关系),地址保存在一个字段中(Json数组对象格式) 1.前端列表动态添加: jsp:<form id="postForm" method=& ...

  8. java接收json数组_后端如何接收json数组

    如何接受json数组 这里用到了Hutool的java工具类库,这是类库地址:www.hutool.cn/docs/#/,有需要的可以自己参考文档集成到自己的项目里,比较方便,种类也比较齐全. 使用J ...

  9. java解析json数组对象_JAVA中快速解析JSON对象里包含的JSON数组

    例如现在有这样一个Json String Value =  {"data":[{"school_name":"西北农林科技大学"," ...

最新文章

  1. BC547 晶体管初步测试
  2. 用 Python 和 OpenCV 检测和跟踪运动对象
  3. (chap7 确保WEB安全的HTTPS) HTTPS加密
  4. 第二十五天 how can I 坚持
  5. 如何提高自身监控系统的能力?
  6. [蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)
  7. MySQL流浪记(三)—— Linux安装MySQL数据库5.7.30(亲测有效3分钟即可)
  8. VS2003创建动态库的一点笔记
  9. php 记录报错,php报错自己记录
  10. 将ShaderToy中的Shader搬运到Unity
  11. 每日新闻丨三大运营商公布5G套餐;华为云领跑中国DevOps云服务市场;致远互联科创板上市...
  12. 50个免费下载3D模型的站点
  13. 高效 Windows 工作环境 Java 开发环境搭建
  14. html语言单个单元格背景颜色,html如何设置表格和单元格的背景颜色
  15. android9支持的tf卡格式,老手机福音 三星安卓9.0测试存储卡装应用功能
  16. CH340国产USB转异步串口芯片替代CP2102对比CH340C与CH340G
  17. java 新浪短链接_新浪t.cn短链接如何生成?网址缩短api接口分享
  18. java后台将数据导出到Excel表格
  19. Unity3d优化总结2
  20. 【SoC FPGA】外设PIO按键点灯

热门文章

  1. python类带参数_Python函数参数传递机制(超级详细)
  2. 有没有计算机用户号,刚做的系统怎么有账户-用户帐号系统设计的原则有哪些?...
  3. java column_@Column注解属性详解
  4. 浪潮服务器可管理和维护性,专注用户需求,浪潮服务器提供优质高效的产品
  5. sftp mysql_Linux下搭建SFTP服务器
  6. layui php ajax分页,layui+thinkphp5.1实现分页(非动态表格)
  7. jsp:param能不能传递变量_变量、作用域与内存
  8. cent os7 安装elasticsearch-7.9.3(伪集群)和kibana-7.9.3
  9. matlab bdir 排序,命令行 - 如何获取按文件夹名称排序的子文件夹及其文件列表
  10. 原生安卓与html 好坏,安卓非原生 系统体验差别大