SpringMvc-json处理

2023-10-26

SpringMvc-json处理

在 JSON 中,使用以下两种方式来表示数据:
Object(对象):键/值对(名称/值)的集合,使用花括号{ }定义。在每个键/值对中,以键开头,后跟一个冒号:,最后是值。多个键/值对之间使用逗号,分隔,例如{“name”:“C语言中文网”,“url”:“http://c.biancheng.net”};
Array(数组):值的有序集合,使用方括号[ ]定义,数组中每个值之间使用逗号,进行分隔。
示例:

{
    "Name":"芜湖",
    "Id":9
    "Article":[
        "JSON 是什么?",
        "JSONP 是什么?",
        "JSON 语法规则"
    ]
}

简单了解了 JSON 之后,我们再来看看什么时候适合使用 JSON。 定义接口 JSON 使用最多的地方莫过于 Web 开发领域了,现在的数据接口基本上都是返回 JSON 格式的数据,比如:
1.使用 Ajax 异步加载的数据;
2.RPC 远程调用;
3.前后端分离,后端返回的数据;
4.开发 API,例如百度、高德的一些开放接口。


1.响应json

·响应json
1 加入jackson依赖
2 将jackson 的jar包加入WEB-INF的lib文件夹 *
3.在对应处理方法上面加上@ResponseBody用于标记该处理方法返回json
将@Controller改成@RestController

在pom.xml中加入jackson相关依赖

     <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.13.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.13.3</version>
        </dependency>

将依赖放入对应的文件夹中
在这里插入图片描述
通过在方法上加入@RespinseBody可以将返回值以文本形式输出
或者将类上面添加@RestController,即这个类下面方法输出的都是文本形式

 @RequestMapping("/json/response")
    @ResponseBody
    public User Jsonresponse(){
        User user = new User(5,"芜湖");
        return user;
    }

对于一些私密变量不想让别人看见 或者 一些特定日期类型 可以使用json中特定的方法

    @JsonIgnore //隐藏值
    private String password;
    @JsonFormat(pattern = "yyyy-MM-dd") //规范格式
    private Date birthday;

2.请求json

ajax我们经常用到,传的数据是json数据,json数据又有对象,数组。以下给大家总结了4 种常用的获取json方式:
前端:

<%--
  Created by IntelliJ IDEA.
  User: 小bobo
  Date: 2022/9/22
  Time: 14:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <script src = "https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
    <script type="text/javascript">
      //页面加载事件简写方式
      $(function () {
        $("#btnJson1").click(function () {
        $.ajax({
          url:"${pageContext.request.contextPath}/json/response2",
          method:"post",
          data:"张三",
          contentType:"application/json",
          dataType:"json",
          success:function (user) {
            alert(user.name);
          }
        });
        });

        $("#btnJson2").click(function(){

          var user={'id':'1','name':'张三'};   // 定义js对象

          $.ajax({
            url:"${pageContext.request.contextPath}/json/wuhu",
            method:"post",
            data:JSON.stringify(user),
            contentType:'application/json',
            dataType:"json",
            success:function(user){
              alert(user.name);
            }
          });
        });

        $("#btnJson3").click(function(){

          // var user={'id':'1','name':'张三'};   // 定义js对象
          // var jsonValue=JSON.stringify(user); // 对象转换为json字符串
          // console.log(jsonValue)
          $.ajax({
            url:"${pageContext.request.contextPath}/json/wuhu1",
            method:"post",
            data:'{"id":"1","name":"张三","birthday":"2019-01-01"}',
            contentType:'application/json',
            dataType:"json",
            success:function(user){
              alert(user.name);
            }
          });
        });

        $("#btnJson4").click(function(){

          var listUser=new Array();
          var user1={"id":"1","name":"张三","birthady":"2019-01-01"};
          var user2={"id":"2","name":"李四","birthady":"2019-01-01"};
          listUser.push(user1)
          listUser.push(user2)
          $.ajax({
            url:"${pageContext.request.contextPath}/json/wuhu2",
            method:"post",
            data:JSON.stringify(listUser),
            contentType:'application/json',
            dataType:"json",
            success:function(user){
              alert(user.name);
            }
          });
        });
      })
    </script>
  </head>
  <body>
  <input type="button" value="发送单个参数json数据" id = "btnJson1"/>
  <input type="button" value="发送对象的json数据用javabean接收" id="btnJson2"/>
  <input type="button" value="发送对象的json数据用javabean接收" id="btnJson3"/>
  <input type="button" value="发送对象的json数据用javabean接收" id="btnJson4"/>
  </body>
</html>

后端:

@Controller
public class JsonController {
    @RequestMapping("/json/response")
    @ResponseBody
    public User Jsonresponse(){
        User user = new User(5,"芜湖");
        return user;
    }


    @RequestMapping("/json/haha")
    @ResponseBody
    public User Jsonresponse1(){
        User user = new User(6,"haha","asfdl",new Date());
        return  user;
    }
1.以RequestParam接收
    @RequestMapping(value = "/json/response2")
    @ResponseBody
    public User Jsonresponse2(@RequestBody String name){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(name);
        return user2;
    }
2.javabean
    @PostMapping(value = "/json/wuhu",consumes = "application/json")
    @ResponseBody
    public User Jsonresponse3(@RequestBody User user){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(user);
        return user2;
    }
3.map集合
    @PostMapping(value = "/json/wuhu1",consumes = "application/json")
    @ResponseBody
    public User Jsonresponse4(@RequestBody Map<String,String> map){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(map);
        return user2;
    }

4.列表
    @PostMapping(value = "/json/wuhu2",consumes = "application/json")
    @ResponseBody
    public User Jsonresponse5(@RequestBody List<User> list){
        User user2 = new User(2,"haha","1215122",new Date());
        System.out.println(list);
        return user2;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringMvc-json处理 的相关文章

  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • ajax4jsf死了吗?还有哪些其他适用于 JSF 的 AJAX 库?

    我目前正在使用JBoss RichFaces http www jboss org jbossrichfaces 我正在从事的项目的 JSF 组件库 一般来说 它工作得很好 特别是 ajax4jsf A4J 提供的 AJAX 支持 但我发现
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 系统架构设计师之用例之间的关系:包含、扩展、泛化

    系统架构设计师之用例之间的关系 包含 扩展 泛化
  • Spring session 浏览器sessionId与服务器不一致解决方案

    项目情况 spring boot 和spring session 版本都是 2 0 2 RELEASE 问题描述 请求项目接口后浏览器保存的sessionId与服务器不一致 拿Postman测试如下图 网上找了很久都没发现有人发过这个问题
  • iOS编程基础-Swift(三)-变量与简单类型

    Swift入门指南 iOS9 Programming Fundamentals With swift 第三章 变量与简单类型 深入介绍变量的声明和初始化 介绍所有主要的Swift內建简单类型 这里的简单是相对 集合 说的 第四章会介绍主要的
  • 你所担心的公共Wi-Fi安全问题,痛客们正在想办法

    你是否看过这样的新闻 在公共场所连接免费Wi Fi 然后手机里的个人信息 和银行账号中的钱 瞬间就被 取走 了 而这也造成了如今很多人虽然走到哪儿都会问Wi Fi密码 但一听是公共Wi Fi就摇头的结果 贵州高科控股集团有限公司的主管易延飞
  • ssh用户密码正确但是登录时却报被拒绝

    问题 有时候 在使用SSH登录到服务器时 明明密码正确 但是登录时候却报被拒绝 这是什么原因呢 解决思路 1 此时我们可以查看Linux服务器的安全日志文件 var log secure 若无异常可以看到如下类似报错异常 Oct 6 21
  • 微信小程序开发

    微信小程序开发2023 7 14 7 19 黑马程序员官方文档 https pan baidu com s 1crZTQdIZ7OSDkZIpIWkhYw pwd 1234 vant Weapp 类似element ui的组件库 https
  • 《Graph Learning专栏》 : 高密子图挖掘

    本周我们介绍另一图上的 聚类 算法 高密子图挖掘 Dense Subgraph Mining 这类算法与社群检测不同的是处理的数据对象是异构图 节点的类型不是单一的 同类型节点之间一般没有边 社群检测需要对整张图的节点进行社区划分 而高密子
  • 医学图像——《Difficulty-aware Meta-learning for Rare Disease Diagnosis》

    Lequan Yu Difficulty aware Meta learning for Rare Disease Diagnosis 摘要 这篇文章提出元学习方法解决罕见疾病分类问题 使用 ISIC 2018 skin lesion 分类
  • unity--城市道路车辆行驶

    目录 1 示意图 1 1行驶路线与红绿灯 2 层级面板 2 1红绿灯 2 2车辆路径点 3 属性面板 3 1红绿灯 3 2路径点 4 脚本代码 4 1 控制脚本 4 2红绿灯脚本 4 3路径点脚本 4 4车辆控制脚本 5 实现效果 1 示意
  • Mysql 学习笔记(快速复习)

    Mysql 学习笔记 快速复习 一 MySQL 基础 1 数据库连接工具 1 1 Navicat 使用教程 2 DDL 操作数据库 2 1 创建新数据库 2 2 删除数据库 2 3 使用数据库 3 CLUD 操作数据表 3 1 查询表 3
  • 机器学习-线性回归-sklearn

    线性模型 Scikit Learn中的线性回归 from sklearn linear model import LinearRegression import numpy as np import matplotlib as mpl im
  • Flink Sort-Shuffle:大数据流处理中的排序与洗牌

    在大数据流处理中 排序和洗牌是常见的操作 用于重新组织和处理数据 Apache Flink是一个流式处理框架 提供了强大的排序和洗牌功能 让我们可以高效地处理大规模的数据集 本文将详细介绍Flink中Sort Shuffle的实现原理和相应
  • Ubuntu20.04卸载gcc9.4.0,安装gcc9.3.0方法

    1 卸载旧版本gcc sudo apt get remove gcc 2 添加软件源 sudo add apt repository ppa ubuntu toolchain r test 3 更新 sudo apt get update
  • 分库表数据倾斜的处理让我联想到了AKF模型

    1 背景 最近在做需求的时候需要在一张表中增加一个字段 这张表情况如下 1 拆分了多个库多张表 2 库表拆分按表中商户编码字段hash之后取模进行拆分 由于库表拆分按照商户编码 有些大商家的单子数量远远要高于其他普通商家 这样就造成了严重的
  • Linux 中task_struct和文件系统的关系

    在内核进程运行的时候 有current 宏对应目前进程task struct结构 Linux进程主要数据结构之间的关系 一个进程文件位置是有fs struct描述的 进程打开的文件是有files struct描述的 具体打开的文件描述符是有
  • MSYS的下载与安装

    文章来源http code google com p msys cn 简介 本网站通过自行开发的mpkg包管理程序 提供MSYS发行版的下载服务 MSYS是Windows环境上的UNIX工作环境 由www mingw org项目所开发 但不
  • 【ES6】Iterator迭代器

    文章目录 一 Iterator 二 用法详解 1 基本用法 2 遍历不可迭代对象 2 1 原生具备Iterator接口的数据结构 2 2 遍历不可迭代的对象 2 3 Generator 遍历不可迭代对象 总结 一 Iterator 遍历器
  • 怎么设置html代码中的编码格式,html怎么设置编码

    在html中 可以使用meta标签来设置编码 语法格式 meta标签提供了HTML文档的元数据 元数据不会显示在客户端 但是会被浏览器解析 而charset属性用于定义文档的字符编码 本教程操作环境 windows7系统 HTML5版 De
  • Linux RTC 驱动实验

    目录 Linux 内核RTC 驱动简介 I MX6U 内部RTC 驱动分析 RTC 时间查看与设置 RTC 也就是实时时钟 用于记录当前系统时间 对于Linux 系统而言时间是非常重要的 就和我们使用Windows 电脑或手机查看时间一样
  • SpringMvc-json处理

    SpringMvc json处理 在 JSON 中 使用以下两种方式来表示数据 Object 对象 键 值对 名称 值 的集合 使用花括号 定义 在每个键 值对中 以键开头 后跟一个冒号 最后是值 多个键 值对之间使用逗号 分隔 例如 na