【SpringMVC】09 对JSON的应用
前面JavaWeb的JSON回顾:
https://www.cnblogs.com/mindzone/p/12820877.html
上面的这个帖子我都还没有实际写进Servlet使用,要Mark一下了
我们配置一个演示的Bean
package cn.dai.pojo; import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; /**
* @author ArkD42
* @file SpringMVC
* @create 2020 - 05 - 07 - 15:06
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private Integer age;
private Boolean gender;
}
编写控制器
@Controller
public class JsonController { @GetMapping("/json01")
public String json01(Model model){ Person person = new Person("阿强", 22, true); model.addAttribute("msg",person.toString()); return "test";
}
}
测试我们的响应结果是否会乱码

然后导入Maven坐标
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
使用Jackson
package cn.dai.controller; import cn.dai.pojo.Person;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping; import java.util.Arrays; /**
* @author ArkD42
* @file SpringMVC
* @create 2020 - 05 - 07 - 15:06
*/
@Controller
public class JsonController { @GetMapping("/json01")
public String json01(Model model) throws JsonProcessingException { Person person = new Person("阿强", 22, true); ObjectMapper objectMapper = new ObjectMapper(); String s = objectMapper.writeValueAsString(person); model.addAttribute("msg", Arrays.toString(new String[]{s,"\n",person.toString()})); return "test";
}
}
访问测试

注意要记得再Web包里面导入Jackson的依赖,
不然会出现找不到Bean异常
测试单个的JSON返回
也是没有问题的,不过这样我也就没有办法演示JSON乱码的问题了

针对JSON乱码的问题,可以使用一个Produces属性
是@RequestMapping注解中的属性

或者使用SpringMVC原生xml配置
Bean方式配置,如果无效,可以尝试放在注解驱动的外面
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
"
>
<!-- 目录扫描的方式注册Bean -->
<context:component-scan base-package="cn.dai.controller" />
<!-- 默认的Servlet处理器 不处理静态资源-->
<mvc:default-servlet-handler />
<!-- MVC 注解驱动支持-->
<mvc:annotation-driven> <!-- 解决JSON乱码 -->
<mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false" />
</bean>
</property>
</bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean> </beans>
对时间的JSON转换,这是使用LocalDateTime的API
@GetMapping("/json02")
public String json02(Model model) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
String format = dateTimeFormatter.format(now);
String nows = objectMapper.writeValueAsString(now);
objectMapper.writeValueAsString(format);
model.addAttribute("msg", "时间转换测试");
model.addAttribute("now", now);
model.addAttribute("nows", nows);
model.addAttribute("format", format);
/*
时间转换测试
2020-05-07T16:03:07.177
{"month":"MAY","year":2020,"dayOfYear":128,"dayOfMonth":7,"hour":16,"minute":3,"monthValue":5,"nano":177000000,"second":7,"dayOfWeek":"THURSDAY","chronology":{"id":"ISO","calendarType":"iso8601"}}
2020-5-7
*/
return "time";
}
然后是原生Date & SimpleDateFormat
@GetMapping("/json03")
public String json03(Model model) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
objectMapper.writeValueAsString(format);
return "time";
}
Fastjson
Maven坐标
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
@GetMapping("/json04")
public String json04(Model model) {
String s = JSON.toJSONString(new Date());
model.addAttribute("msg", s);
return "time";
}
【SpringMVC】09 对JSON的应用的更多相关文章
- SpringMVC中使用Json传数据
在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...
- springmvc 怎么响应json数据
springmvc 怎么响应json数据@Controller@RequestMapping("/items") class ItemsController{ @RequestM ...
- springMVC参数绑定JSON类型的数据
需求就是: 现在保存一个Student,并且保存Student的friend,一个student会有多个朋友,这里要传递到后台的参数是: var friends = new Array(); var ...
- SpringMVC中返回JSON时乱码的解决方案
springMVC中返回JSON会出现乱码,解决如下: produces = "text/html;charset=UTF-8" @ResponseBody @RequestMap ...
- springmvc添加mock json的支持
在springmvc中 添加对服务器classPath下的json文件解析之后返回的mock功能: import java.io.FileNotFoundException; import java. ...
- SpringMVC @RequestBody接收Json对象字符串 demo
springmvc 的这个 @RequestBody 用得比较少,今天看了一下,还是很方便. @RequestBody 接收类似 [{name: "test"}, {name: & ...
- mongodb Decimal Spring data mongodb Decimal128 SpringMvc 序列化字符串 json converter
Mongodb 3.4 就开始支持Decimal 类型,解决double的精度问题,但是不太好用,MapReduce的时候Array.sum 也不能计算 Decimal.比较坑,但是聚合可以用 Spr ...
- SpringMVC文件下载与JSON格式
点击查看上一章 现在JSON这种数据格式是被使用的非常的广泛的,SpringMVC作为目前最受欢迎的框架,它对JSON这种数据格式提供了非常友好的支持,可以说是简单到爆. 在我们SpringMVC中只 ...
- SpringMVC中使用JSON
前台发送: 传递JSON对象 function requestJson(){ $.ajax.({ type : "post", url : "${pageContext. ...
- SpringMVC整合FastJson:用"最快的json转换工具"替换SpringMVC的默认json转换
2017年11月23日 09:18:03 阅读数:306 一.环境说明 Windows 10 1709 Spring 4.3.12.RELEASE FastJson 1.2.40 IDEA 2017. ...
随机推荐
- vue bus传参
新建一个js文件,命名为bus.js.bus.js文件的内容为: import Vue from 'vue' const bus = new Vue() export default bus 页面de ...
- 在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制)
1. 在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制) @ 目录 1. 在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadL ...
- rust程序设计(4)关于 trait | impl 相关的概念和疑问
trait是什么? Rust中的trait是一种定义可被多种类型实现的共享行为的方式.它类似于Java或C#中的接口.通过trait,你可以定义一组方法签名(有时包括默认实现),不同的类型可以实现这些 ...
- apollo配置中心从数据库中查询所有的配置及项目
apollo配置中心从数据库中查询所有的配置及项目 需求背景:如果需要从Apollo查询某个配置项做批量的更新替换,如果一个一个找不合适且容易遗漏,需要从底层数据库表中模糊查询来实现. 1.查看apo ...
- [OC]一个括号新建一个类
[OC]一个括号新建一个类 特别说明 以下代码仅仅用于说明用途,命名也不是特别规范,小朋友不要模仿哦. 前言 在iOS开发中,我们会经常用到这么一段代码: UIView *myView = [UIVi ...
- C++判断当前程序是否运行在Windows展台(Kiosk)模式下
Windows有一个展台(Kiosk)模式.展台模式可以使Windows作为数字标牌进行使用.具体请参考Windows 展台 配置完展台模式,重启设备后,Windows会以全屏的方式运行展台应用,无法 ...
- 一招解决github访问慢的问题
之前我在网上搜过解决办法,其中一个是修改 hosts 文件,但是效果不太理想.我在这里给大家推荐github上的一个开源项目:FastGithub .用了这个之后,效果就比较理想了,次次都能访问到 ...
- mysqldump备份时保持数据一致性分析--master-data=2 --single-transaction
对MySQL数据进行备份,常见的方式如以下三种,可能有很多人对备份时数据一致性并不清楚 1.直接拷贝整个数据目录下的所有文件到新的机器.优点是简单.快速,只需要拷贝:缺点也很明显,在整个备份过程中新机 ...
- 基于RK3588的NPU案例分享!6T是真的强!
RK3588 NPU简介 作为瑞芯微新一代旗舰工业处理器,RK3588 NPU性能可谓十分强大,6TOPS设计能够实现高效的神经网络推理计算.这使得RK3588在图像识别.语音识别.自然语言处理等人工 ...
- JavaSE 计算2个List集合中的交集、差集、并集、去重并集
VideoOrder.java 重写里面的equals和hashCode方法 class VideoOrder { private int price; private String title; p ...