外贸网站建设是什么意思,设备管理系统网站模板,wordpress 水煮鱼小程序,模板价格多少钱一平方文章目录 一、JSON 数据的交互处理1、为什么要使用 JSON2、JSON 和 JavaScript 之间的关系3、前端操作 JSON3.1 JavaScript 对象与 JSON 字符串之间的相互转换 4、JAVA 操作 JSON4.1 Json 的解析工具#xff08;Gson、FastJson、Jackson#xff09;4.2 ResponseBody 注解、Re… 文章目录 一、JSON 数据的交互处理1、为什么要使用 JSON2、JSON 和 JavaScript 之间的关系3、前端操作 JSON3.1 JavaScript 对象与 JSON 字符串之间的相互转换 4、JAVA 操作 JSON4.1 Json 的解析工具Gson、FastJson、Jackson4.2 ResponseBody 注解、RestController 注解4.3 java 中操作 JSON 的方式返回值不做处理返回默认 json4.3.1 配置乱码过滤器乱码问题统一解决 4.4 java 中操作 JSON 的方式 Jackson JSON 概况以及 JAVA 基本操作 JSON 数据的方式 一、JSON 数据的交互处理 1、为什么要使用 JSON 因为现在的项目大多数都是前后端分离的项目前端和后端都独立开发和部署。 由后端提供接口前端从接口获取数据将数据渲染到页面上。前后端数据传输的格式就是 JSON 2、JSON 和 JavaScript 之间的关系 JSON 和 JavaScript 的关系 JSON 是 JavaScript 对象的字符串表示法它使用文本表示一个 JS 对象的信息本质是一个字符串。 var obj {a: Hello, b: World}; //这是一个对象注意键名也是可以使用引号包裹的
var json {a: Hello, b: World}; //这是一个 JSON 字符串本质是一个字符串3、前端操作 JSON 代码示例 创建一个 HTML 文件在 head 中添加 script 标签编写示例代码 注 script 必须成对出现否则不生效 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typeapplication/javascript// 创建对象定义属性并赋值var user {name:姚青,age:24,sex:男}// 打印 user 对象console.log(user);/script
/head
body/body
/html通过浏览器打开该文件可以看到打印的对象对象是可以打开的字符串不行
3.1 JavaScript 对象与 JSON 字符串之间的相互转换 在 JavaScript 中默认提供了一个 JSON 的类这个类中提供了两个方法可以实现 JSON 和 JavaScript 的相互转换 parse() 将 JSON 字符串转换为 JavaScript 对象 stringify() 将 JavaScript 对象转换为 JSON 字符串 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlescript typeapplication/javascriptvar user {name:姚青,age:24,sex:男}// 打印正常对象console.log(user);// 打印对象转换后的JSONvar json JSON.stringify(user);console.log(json);// 打印JSON转换的JavaScript 对象var JavaScript JSON.parse(json);console.log(JavaScript);/script
/head
body/body
/html 执行结果 4、JAVA 操作 JSON
4.1 Json 的解析工具Gson、FastJson、Jackson Gson谷歌公司推出的Json解析工具 Gson 主要有 toJson 与 fromJson 两个转换方法通过这两个方法实现 Json 与 Java 对象之间的相互转换 Gson详解用法 FastJson阿里巴巴推出的Json解析工具 FastJson 在复杂类型的 Bean 转换 Json 上会出现一些问题可能会出现引用的类型导致 Json 转换出错需要制定引用。 FastJson 采用独创的算法将解析的速度提升到极致超过所有 json 库。 FastJson 依赖包导入 pom.xml 中即可使用dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.60/version
/dependencyFastJson的使用方法 JacksonJackson 是比较著名的一个解析工具 Jackson 是当前用的比较广泛的用来序列化和反序列化 json 的 Java 的开源框架 Jackson 社 区相对比较活跃更新速度也比较快是最流行的 json 解析器之一 Jackson 依赖包导入 pom.xml 中即可使用 !-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.8/version
/dependencyObjectMapper 类 ObjectMapper 类(com.fasterxml.jackson.databind.ObjectMapper)是 Jackson 的主要类它可以帮助我们快速的进行各个类型和Json类型的相互转换。 public String writeValueAsString(Object value): 将 Java 对象转换成 JSON ObjectMapper 类详解 区别 FastJson的性能优于Gson但是处理复杂类型时可能会出现一些错误到现在还有很多BUG没修。Gson的功能非常的齐全。Jakson性能也非常出色但是将核心功能拆分成三个模块有Jar依赖。 注Java工具千千万处理 json 的工具有很多大多数都是可以完成数据转换这一过程的只是不同的工具所呈现的效果不一。所以选择适合工具即可。 4.2 ResponseBody 注解、RestController 注解 ResponseBody 注解 1、概念 ResponseBody 注解使用在控制层controller的方法上。 2、作用 将方法的返回值以特定的格式写入到response的body区域进而将数据返回给客户端。 当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。 如果返回值是字符串那么直接将字符串写到客户端如果是一个对象会将对象转化为 json 串然后返回给客户端。 RestController 注解 1、概念 ResponseBody 注解使用在控制层controller的类上。 2、作用 RestController 的作用等同于 Controller ResponseBody。并且改注解的作用域是整个类当类被该注解标记时类中所有的方法都会返回 JSON 不用再每一个方法上都添加 ResponseBody了。
注当使用 ResponseBody 注解和 RestController 注解时就不会去走视图解析器了直接返回一个字符串 4.3 java 中操作 JSON 的方式返回值不做处理返回默认 json 代码示例 配置 SpringMVC 需要的配置 web.xml ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--1.注册servlet--servletservlet-nameSpringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!--通过初始化参数指定SpringMVC配置文件的位置进行关联--init-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:SpringMVC-Servlet.xml/param-value/init-param!-- 启动顺序数字越小启动越早 --load-on-startup1/load-on-startup/servlet!--所有请求都会被springmvc拦截 --servlet-mappingservlet-nameSpringMVC/servlet-nameurl-pattern//url-pattern/servlet-mappingfilterfilter-nameencoding/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-param/filterfilter-mappingfilter-nameencoding/filter-nameurl-pattern//url-pattern/filter-mapping/web-appSpring 配置文件 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd!-- 自动扫描指定的包下面所有注解类交给IOC容器管理 --context:component-scan base-packagecom.sys.controller//beans创建实体类 Data
public class User {private String id;private String name;private int age;private String sex;private String pass;public User(String id, String name, int age, String sex, String pass) {this.id id;this.name name;this.age age;this.sex sex;this.pass pass;}}创建 Controller Controller
public class UserController {RequestMapping(/json)ResponseBodypublic String getUserJson() {return new User(1, 姚青, 999, 男, 123456).toString();}
}启动 tomcat发现返回的 Json 中数字类型返回正常中文乱码 4.3.1 配置乱码过滤器乱码问题统一解决 在 Spring 配置文件中配置乱码过滤器 mvc:annotation-drivenmvc:message-converters register-defaultstruebean classorg.springframework.http.converter.StringHttpMessageConverterconstructor-arg valueUTF-8//beanbean classorg.springframework.http.converter.json.MappingJackson2HttpMessageConverterproperty nameobjectMapperbean classorg.springframework.http.converter.json.Jackson2ObjectMapperFactoryBeanproperty namefailOnEmptyBeans valuefalse//bean/property/bean/mvc:message-converters/mvc:annotation-driven重新发布项目 4.4 java 中操作 JSON 的方式 Jackson 代码示例1:将Java对象转换成 JSON 创建 controller引入 Jackson 工具依赖其余内容不变 RestController
public class JacksonController {RequestMapping(/getJackson)public String getJackson(){User user new User(1, 姚青, 999, 男, 123456);//创建 jackson 对象映射器用来解析数据ObjectMapper objectMapper new ObjectMapper();String str;try {// 将 java 对象转换成 jsonstr objectMapper.writeValueAsString(user);} catch (JsonProcessingException e) {throw new RuntimeException(e);}return str;}}启动 tomcat查看结果 代码示例2:返回集合通过 Jackson 将集合转换成 JSON 在 JacksonController 中新增接口 RestController
public class JacksonController {RequestMapping(/getJackson)public String getJackson() {User user new User(1, 姚青, 999, 男, 123456);//创建 jackson 对象映射器用来解析数据ObjectMapper objectMapper new ObjectMapper();String str;try {// 将 java 对象转换成 jsonstr objectMapper.writeValueAsString(user);} catch (JsonProcessingException e) {throw new RuntimeException(e);}return str;}RequestMapping(/getJackson2)public String getJackson2() {User user new User(1, 姚青, 999, 男, 123456);User user2 new User(2, 姚青2, 998, 男, 123456);User user3 new User(3, 姚青3, 997, 男, 123456);User user4 new User(4, 姚青4, 996, 男, 123456);ListUser list new ArrayList();Collections.addAll(list, user, user2, user3, user4);//创建 jackson 对象映射器用来解析数据ObjectMapper objectMapper new ObjectMapper();String str;try {// 将 java 对象转换成 jsonstr objectMapper.writeValueAsString(list);} catch (JsonProcessingException e) {throw new RuntimeException(e);}return str;}}运行结果