jsp中接收JSON型数据可能会遇到的坑

最近一直在做安卓开发,但是同事遇到了JAVA中jsp页面上json数据接收后放到一个标签中丢失一部分数据得问题,就帮忙解决了下,具体情况是,后台返回的jsonArray型数据,里面包含了字段是date 内容是年月日时分秒这样的数据 如"2019-07-01 10:05:12",传到页面上时就只剩下"2019-07-01",后面的包括其他的只要是在时分秒后面的数据,都没有了。初步分析是因为日期格式的冒号可能和json冲突,经过测试发现是因为日期和时间直接的空格导致的,如果把空格替换成"aaa"就可以全部展示,就一直找这个空格的转义方式,经测试都无果,后来就考虑是input接收的方式不对,原代码如下:

<input type="hidden" name="traineeInfo" id="traineeInfo" value=<%=traineeInfo%>/>

把traineeInfo这个jsonArray型数据直接放在value里面丢失空格后面的数据,如果value后面是String类型的数据加上双引号就可以。然后就考虑是因为格式不对,百度了一番,发现有人说是json型数据应该用单引号,就修改代码如下:

<input type="hidden" name="traineeInfo" id="traineeInfo" value='<%=traineeInfo%>'/>

很神奇的就可以了,仔细考虑下,还是有道理的,里面的内容是字符串,隐形的有双引号了,所以外面包裹一个单引号,算是用单引号圈个json内容的界限,这样想的话就能理解了
希望对大家有帮助,少走点弯路!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP 获取 JSON 数据可以通过以下步骤完成: 1. 导入必要的包: ```java <%@ page import="java.io.BufferedReader" %> <%@ page import="java.io.InputStreamReader" %> <%@ page import="java.net.URL" %> <%@ page import="java.net.HttpURLConnection" %> ``` 2. 建立与 JSON 数据源的连接: ```java String urlStr = "https://example.com/data.json"; // JSON 数据源的 URL URL url = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); ``` 3. 读取返回的 JSON 数据: ```java BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder jsonStr = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { jsonStr.append(line); } reader.close(); connection.disconnect(); ``` 4. 解析 JSON 数据: 使用 JSON 解析库(如 Jackson、Gson 等)将获取到的 JSON 字符串解析为 Java 对象或者集合,以便在 JSP 使用。 以下是一个简单示例,使用 Gson 库将 JSON 字符串解析为 Java 对象: ```java <%@ page import="com.google.gson.Gson" %> <%@ page import="com.example.DataModel" %> <!-- 示例的 DataModel 是自定义的 Java 类,根据实际情况修改 --> <% String urlStr = "https://example.com/data.json"; // JSON 数据源的 URL URL url = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder jsonStr = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { jsonStr.append(line); } reader.close(); connection.disconnect(); Gson gson = new Gson(); DataModel data = gson.fromJson(jsonStr.toString(), DataModel.class); %> ``` 在上述示例,`DataModel` 是一个自定义的 Java 类,用于映射 JSON 数据的结构。你需要根据实际情况修改 `DataModel` 类的定义以适应你的 JSON 数据结构。 完成以上步骤后,`data` 对象将包含从 JSON 数据获取的数据,你可以在 JSP 页面使用它进行展示或其他操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值