@RequestBody接收ajax的json字符串

在使用ajax进行请求,并传递参数时,偶尔需要把数组作为传递参数,这是就要使用@RequestBody来解决这个问题

在页面端的处理:

(1)利用JSON.stringify(arr)需要把json对象数组转变成一个json对象字符串
(2)在ajax的参数中设置"contentType": "application/json"

  $(function(){
         $("#exe").on("click",function(){
            var arr = new Array();
            arr.push({"name":"lcs","age":18});
            arr.push({"name":"yds","age":19});
            arr.push({"name":"hrl","age":20});
            arr.push({"name":"lyf","age":21});
            var arrs = JSON.stringify(arr);
            $.ajax({
                "url": "ajax_array.do",
                "type": "post",
                "data": arrs,
                "contentType": "application/json",
                "dataType": "json",
                "success": function(result){
                    alert("请求成功!");
                },
                "error": function(){
                    alert("请求失败!");
                }
            });
        });
    });

在后端的处理:

(1)利用RequestBody来接收JSON对象字符串,persons中是json对象数组进JSON.stringify(arr)转换的JSON对象字符串(数组的json对象字符串)

(2)导入json-lib,利用其JSONArray和JSONObject的方法来解析获取JSON对象字符串中的数据

(3)JSONArray.fromObject(persons)是把JSON对象字符串转换成JSON对象。

  @ResponseBody
    @RequestMapping("/ajax_array.do")
    //@RequestBody接收ajax请求的json字符串参数
    public String getPersons(@RequestBody Person[] persons){
        //将persons JSON字符串转换成JSON对象
        //JSONArray对象,有点像list对象
        JSONArray arrs = JSONArray.fromObject(persons);
        List<Person> personList = new ArrayList<Person>();
        //遍历JSONArray
        for(int i=0; i<arrs.size(); i++){
            Person person = new Person();
            //getJSONObject(i)是一个json对象
            String name = arrs.getJSONObject(i).getString("name");
            int age = arrs.getJSONObject(i).getInt("age");
            person.setName(name);
            person.setAge(age);
            personList.add(person);
        }
        System.out.println(personList);
        return "success";
    }
时间: 2024-08-05 17:27:17

@RequestBody接收ajax的json字符串的相关文章

使用原生ajax处理json字符串

我们使用得还是wamp,如果不知道环境怎么搭建,请在我的日志里面找,此处不在累赘. 什么是json?JSON的全称是 Javascript Object Notation(javascript对象表示法),是基于javascript对象字面量,如果单从眼睛看,JSON里的数据是被保存在花括号里面-- {},如果在用途上面进一步分析,JSON是一种数据交换格式.JSON内部以 名称:值这种格式排列,如下面的json1,就是一个json对象. var json1={"name":"

ajax响应json字符串和json数组

最近上班太忙,晚上抽空整理一下ajax请求中,后台返回json字符串和json数组的场景,以及前台的处理示例. 直接看代码. json字符串的后台响应 package com.ajax; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.serv

spring mvc+ajax 实现json格式数据传递

使用ajax传递JSON对象 下面示例为ajax发送json对象,返回json格式数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 $.ajax({ url: "api/user", type: "POST", timeout: txnTimeOut, async: true, dataType: "json", data: {username : "lucy"}

Json字符串和Json对象的简单总结

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率).经常在调用C#的WebService接口中,用它作为数据传输的格式. 简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序.这个字符串看起来有点儿古怪(稍后会看到

SpringMVC @RequestBody接收Json对象字符串

转:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024741.html 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串.同时ajax请求的时候也

SpringMVC @RequestBody接收Json对象字符串 demo

springmvc 的这个 @RequestBody 用得比较少,今天看了一下,还是很方便. @RequestBody 接收类似 [{name: "test"}, {name: "张三"}] 这样的json字符串. 先看页面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here<

spring mvc接收ajax提交的JSON数据,并反序列化为对象

需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; $.ajax({ url: "/book/adddata", type: "POST", dataType: 'json', //必需设定,后台@RequestBody会根据它做数据反序列化 contentType:"application/json&quo

【Spring学习笔记-MVC-6】SpringMVC 之@RequestBody 接收Json数组对象

作者:ssslinppp       1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台接受后台传递过来的json数据,并显示. 2. 前台界面和js <%@ page language="java" pageEncoding="UTF-8"%> <% String path = request.ge

ajax传JSON时设置的contenttype导致JAVA中request.getParameter(&quot;&quot;)怎么也接收不到数据

ajax传JSON时设置的contenttype默认值是application/x-www-form-urlencoded, 当ajax传JSON时设置的contenttype 如果是application/json或者text/json时,JAVA中request.getParameter("")是接收不到数据的. 因为在java后台会认为你传递的是一个纯文本流,而非键值对,是不能存入requestMap的. 可以把流读取出来转成json转成lsit或对象等,在Spring中使用@R