json前后台传值方法,json和js相互转换的方法

json前后台传值方法,json和js相互转换的方法

前端json和js相互转换

n和js的区别就是json是字符串类型的js。
JSON.stringify()可以在前端把js对象转换成json字符串传给后台
JSON.parse()这个方法是把json字符串转换成js对象

前端演示

需要注意的就是json的key值一定是字符串类型,你看我的key
全部都打了双引号的。
而js是可打可不打双引号

<script>
  var str = {"name":"zhangsan",
             "age":18}
  //转换成json字符串
  alert(str);
 var  jsonstr=  JSON.stringify(str);
 alert(jsonstr);
var jsonobject =  JSON.parse(jsonstr);
alert(jsonobject);
</script>

依次跳出的效果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后台演示

主要用lgson工具包的两个方法
1.gson.toJson()把其他类型转换成gson字符串类型
2.gson.fromJson(gson字符串,对象.getclass())

我用的是gson这个工具包,当然你也可以用其他插件,当然功能都大同小异,不过方法不一样

  Gson gson = new Gson();
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println("我是集合"+list);
        String s = gson.toJson(list);
        System.out.println("我是集合转换后的json字符串"+s);
        ArrayList arrayList = gson.fromJson(s, list.getClass());
        System.out.println("我是json转换后的集合"+arrayList);

效果如下
在这里插入图片描述

前后台交互

前端我一般用的是ajax传的通过ajax的data传送给后台,而后台接受通过传输data的key的来获取数据内容
后端给前端传值我一般是用的servlet的req.setAttribute(“key”,value)
前端接受用el表达式

后端代码

@WebServlet("/tt")
public class TestAjax  extends HttpServlet {
	/*在ajax的请求内,一定不要进行转发或者重定向*/
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Gson gson = new Gson();
		ArrayList<String> list = new ArrayList<>();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		String s = gson.toJson(list);
		req.setAttribute("list",s);
		Object o = new Object();
		String js = req.getParameter("jsonstr");
		Object o1 = gson.fromJson(js, o.getClass());
		System.out.println(o1);
	}
}

前端代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
  String path = request.getContextPath();
  String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
          + path + "/";
%>
<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script>
<html>
  <head>
    <title></title>
  </head>
  <%--获取request里面保存的数据 --%>
  <%--使用EL表达式来获取  语法结构: ${键值}--%>
  <%--为什么会有EL表达式,其实就是写法方便--%>
  <body>
    <h1>${list}</h1>

  </body>
<script>
  var str = {"name":"zhangsan",
    "age":18}
  var  jsonstr=  JSON.stringify(str);
  $.ajax({
    type:"post",
    url:"<%=basePath%>tt",
    dataType:"text",
    data:{jsonstr:jsonstr},
    success:function (info) {
    var  jsonstr=  JSON.stringify(${list});
    alert("收到来自后端的json数据"+jsonstr);
    },
    },
    error:function () {
      layer.msg("ajax请求失败",{icon:2});//这个是一个框架里面的,不用管。
    }

  })
</script>

后端输出
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用axios库发送POST请求时,可以通过设置请求头的方式将请求体中的JSON数据转化为表单数据进行传值。 首先,需要确保已经在项目中引入了axios库,可以通过npm或者CDN的方式进行引入。 然后,在发送POST请求,需要对请求头进行配置。使用axios库时,可以通过设置`headers`属性来配置请求头。将请求头中的`Content-Type`设置为`application/x-www-form-urlencoded`,表示要将请求体中的数据转化为表单数据。 接下来,在发送POST请求时,需要将JSON数据转化为URL编码的表单数据。可以使用`URLSearchParams`对象来实现这一转换。首先,将JSON数据转化为字符串,然后用`URLSearchParams`对象进行实例化并传入JSON字符串。最后,通过`toString()`方法JSON数据转化为URL编码的表单数据格式。 最后,使用axios库发送POST请求时,在配置对象中的`data`属性中传入URL编码的表单数据。这样,发送的请求体中就包含了转化后的表单数据。 下面是一个示例代码: ```javascript import axios from 'axios'; // ... async function postData(jsonData) { try { const formData = new URLSearchParams(JSON.stringify(jsonData)).toString(); const response = await axios.post('your-url', formData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }); console.log(response.data); } catch (error) { console.error(error); } } postData({ key1: 'value1', key2: 'value2' }); ``` 以上就是使用axios库将JSON数据转化为表单数据进行传值方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩成笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值