java如何接收ajax传递的json类型的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何接收ajax传递的json类型的数据相关的知识,希望对你有一定的参考价值。

主要是赋值给Map就行。
json数据格式为:
name:'张三',age:20这样的不是数组时,
在java中new一个Map对象获取,如
Map<String,String> map = (Map<String,String>)request.getParament("json");
然后获取name为:map.get("name");
如果json数据为数组:
[name:'张三',age:17,name:'李四',age:20]
在java中new一个
List<Map<String,String> maplist = (List<Map<String,String>)request.getParament("json");
参考技术A 所谓JSON格式,并不是直接传递的JSON对象,直接当字符串接受就可以,接受后,因为是指定的格式,那么就可以用一些第三方的有关JSON对象的jar包中的类,然后相对好解析。 参考技术B ajax吧json按字符串传过来就行,后台用json包转换成java对象就可以了。上网上找个json的例子很简单 参考技术C 服务器上用spring,struts,非web项目用httpclient

ASP Action函数 如何接收前台ajax传递的数据(编辑中。。。)

参看链接:https://www.cnblogs.com/umlzhang/p/3654486.html

我这里总结一下,Action的参数的来源比较多

1.url

2.路由设定

3.post中的内容被自动映射(form格式,json格式都可以)

 如果参数的类型是可为空类型,那么当不传递这个参数时,也能正确执行函数。但是,如果是int 这种,不能为空的类型,就会出现调用错误。这时候,需要使用int ? 类型。

 

对于post 请求 ,action 的参数自动映射与 request 的content-type 密切相关, 但是无论哪种post请求,request的InputStream属性一定保存着post过来的数据。 

例子1:

post 一个 content-type 为 application/json 的json到服务器端,json内容如下:

{"name":"aaaa","Meetings":"1","ImageBase64":"BBBCCCCC"}

服务器结果如下:

 可以看到,json中的key都被映射到了同名变量或属性中。hcpDto的 Name  和 name 的值,都来自json中的name,忽略大小写区别。可以简单地理解成,只要名称和类型允许,就会进行相应的映射。

但是用在request 的 form属性和 params属性中,没有出现相应的值,参见下图

 

例子1.2,如果post一个复杂的json对象

{"HCPInsertDto":{"name":"aaaa","Meetings":"1"},"ImageBase64":"BBBCCCCC"}

结果如下图:

 

 

 name的值无法取到,也就是说,默认是无法解析json中第二层的属性。那么为什么有的框架可以做到多层json的解析呢?????????????????????

 

 

例子2:

post 一个 content-type 为 application/x-www-form-urlencoded的数据到服务器,数据内容如下:

name=aaa&imagebase64=bbbbbbbb

 服务器截图如下:

同时可以注意到,以 application/x-www-form-urlencoded 形式提交的数据,可以在request对象中的 form属性和params属性中都有值:

 

例子3

post 一个 content-type 为 multipart/form-data 的

首先,这个post的data格式,和 content-type的内容有些特殊,最好使用一个form表单构建,再粘贴到 restful client 里实验,截图如下:

结果如下:

可以看到,参数可以正确映射

 

 

 例子4 在一些ios之类的前台库里,可以传递一个数组,我用restful client模拟了一下这种情况

 代码如下:

------WebKitFormBoundaryTmMzofe8Ic12TbyA
Content-Disposition:form-data;name="attendees[]"

aaaa
------WebKitFormBoundaryTmMzofe8Ic12TbyA
Content-Disposition:form-data;name="attendees[]"

bbbb
------WebKitFormBoundaryTmMzofe8Ic12TbyA--

多次传递同样的name属性,后台就会把这些数据处理为一个数组。注意,这里的[] 符号可以省略,server同样可以解析。

解析结果如下:

 

以上是关于java如何接收ajax传递的json类型的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ajax将json传入后台数据

PHP使用POST传递json数据的接收与处理问题

ajax传递json数组对象

ajax 使用POST方法传的数据服务端怎么接

struts2怎样获取AJAX post请求传递的数据

ajax接收springMVC传递的json数据