开一个网站_只做同城交易,哈尔滨专业网站建设哪个好,北京企业建立网站,广州好玩的地方和景点2024.3.14 Thursday
接上文【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】 目录 6.7.编写抽象类6.7.1.原因6.7.2.新建JsonUtils.java6.7.3.在UserController添加一个方法json6验证抽象类可调用6.7.4.在UserController添加一个方法json7验证该抽象类可复用6.7.5.运行 6.8.…2024.3.14 Thursday
接上文【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】 目录 6.7.编写抽象类6.7.1.原因6.7.2.新建JsonUtils.java6.7.3.在UserController添加一个方法json6验证抽象类可调用6.7.4.在UserController添加一个方法json7验证该抽象类可复用6.7.5.运行 6.8.FastJson6.8.1.概况6.8.1.1.fastjson.jar简介6.8.1.2.Fastjson三个主要的类1. JSONObject代表json对象2. JSONArray代表 json 对象数组3. JSON代表 JSONObject和JSONArray的转化 6.8.2.在pom.xml中导入依赖6.8.3.代码测试6.8.3.1. 修改UserController中的方法json76.8.3.2.新建一个FastJsonDemo.java 6.8.4.提示 6.7.编写抽象类
6.7.1.原因
如果要经常使用上述功能每次书写比较麻烦我们可以将这些代码封装到一个工具类中
6.7.2.新建JsonUtils.java package P14.utils;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;import java.text.SimpleDateFormat;public class JsonUtils {//本方法对getJson进行方法重载不必重写一遍具体代码只需要将默认值返回即可public static String getJson(Object object) {return getJson(object,yyyy-MM-dd HH:mm:ss);}public static String getJson(Object object,String dateFormat) {ObjectMapper mapper new ObjectMapper();//不使用时间差的方式mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);//自定义日期格式对象SimpleDateFormat sdf new SimpleDateFormat(dateFormat);//指定日期格式mapper.setDateFormat(sdf);try {return mapper.writeValueAsString(object);} catch (JsonProcessingException e) {e.printStackTrace();}return null;}
}6.7.3.在UserController添加一个方法json6验证抽象类可调用 RequestMapping(/j6_utils)public String json6(){Date date new Date();return JsonUtils.getJson(date,yyyy-MM-dd HH:mm:ss);
// HH 是24小时的 hh是12小时的
// return JsonUtils.getJson(date);亦可}6.7.4.在UserController添加一个方法json7验证该抽象类可复用
RequestMapping(/j7_utils_j2)public String json7() throws JsonProcessingException {//创建集合ListUser userList new ArrayList();User user1 new User(张三,11,female);User user2 new User(李四,11,male);User user3 new User(王五,11,female);//将user加入集合userList.add(user1);userList.add(user2);userList.add(user3);return JsonUtils.getJson(userList);}6.7.5.运行
http://localhost:8080/springmvc_05_json_war_exploded//j6_utils http://localhost:8080/springmvc_05_json_war_exploded//j7_utils_j2 运行调用方法json7得出的结果和方法json2完全相同
6.8.FastJson
6.8.1.概况
6.8.1.1.fastjson.jar简介
fastjson.jar是阿里开发的一款专门用于Java开发的包可以方便的实现json对象与JavaBean对象的转换实现JavaBean对象与json字符串的转换实现json对象与json字符串的转换。实现json的转换方法很多最后的实现结果都是一样的。
6.8.1.2.Fastjson三个主要的类
1. JSONObject代表json对象
JSONObject实现了Map接口, 猜想JSONObject底层操作是由Map实现的。JSONObject对应json对象通过各种形式的get()方法可以获取json对象中的数据也可利用诸如size()isEmpty()等方法获取键值对的个数和判断是否为空
2. JSONArray代表 json 对象数组
内部是有List接口中的方法来完成操作的。
3. JSON代表 JSONObject和JSONArray的转化
JSON类源码分析与使用仔细观察这些方法主要是实现json对象json对象数组javabean对象json字符串之间的相互转化。
6.8.2.在pom.xml中导入依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.60/version/dependency6.8.3.代码测试
6.8.3.1. 修改UserController中的方法json7
改为使用fastjson作为抽象类返回值
RequestMapping(/j7_utils_j2)public String json7() throws JsonProcessingException {//创建集合ListUser userList new ArrayList();User user1 new User(张三,11,female);User user2 new User(李四,11,male);User user3 new User(王五,11,female);//将user加入集合userList.add(user1);userList.add(user2);userList.add(user3);// return JsonUtils.getJson(userList);
// 使用fastjson解析如下String str JSON.toJSONString(userList);return str;}运行前要记得在Project Structure中添加fastjson依赖包 否则 运行 http://localhost:8080/springmvc_05_json_war_exploded/j7_utils_j2 使用fastjson后json7得出的结果和方法json2仍然完全相同与修改json7之前也相同
6.8.3.2.新建一个FastJsonDemo.java package P14.controller;import P14.project.User;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;RestController
public class FastJsonDemo {RequestMapping(/fj)public String fastjson(){//创建一个对象User user1 new User(张三, 3, 男);User user2 new User(李四, 3, 男);User user3 new User(王五, 3, 男);User user4 new User(赵六, 3, 男);ListUser list new ArrayListUser();list.add(user1);list.add(user2);list.add(user3);list.add(user4);System.out.println(*******Java对象 转 JSON字符串*******);String str1 JSON.toJSONString(list);System.out.println(JSON.toJSONString(list)str1);String str2 JSON.toJSONString(user1);System.out.println(JSON.toJSONString(user1)str2);System.out.println(\n****** JSON字符串 转 Java对象*******);User jp_user1JSON.parseObject(str2,User.class);System.out.println(JSON.parseObject(str2,User.class)jp_user1);System.out.println(\n****** Java对象 转 JSON对象 ******);JSONObject jsonObject1 (JSONObject) JSON.toJSON(user2);System.out.println((JSONObject) JSON.toJSON(user2)jsonObject1.getString(name));System.out.println(\n****** JSON对象 转 Java对象 ******);User to_java_user JSON.toJavaObject(jsonObject1, User.class);System.out.println(JSON.toJavaObject(jsonObject1, User.class)to_java_user);return str1;}
}运行以Java对象 转 JSON字符串作为页面输出 http://localhost:8080/springmvc_05_json_war_exploded/fj
6.8.4.提示
这种工具类我们只需要掌握使用就好了在使用的时候在根据具体的业务去找对应的实现。和以前的commons-io那种工具包一样拿来用就好了JSON在数据传输中十分重要一定要学会使用。