springmvc05-json交互处理

什么是json:

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。

*采用完全独立于编程语言的文本格式来存储和表示数据。

*简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

*易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。看看他的要求和语法格式:

*对象表示为键值对,数据由逗号分隔

*花括号保存对象

*方括号保存数组

JSON 键值对是用来保存 JavaScript 对象的一种方式,和 JavaScript 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:

 

 

 很多人搞不清楚json和javascriot对象的关系,其实可以这么理解:

json是javascriot对象的字符串表示法,他使用文本表示一个JS对象的信息,本质是一个字符串

 

 

 JSON 和 JavaScript 对象互转

要实现json字符串转换为javascript对象,可以用json.parse()方法

 

 

 要实现从JavaScript 对象转换为JSON字符串,使用 JSON.stringify() 方法:

 

 

 代码测试

在web目录下新建一个 json-1.html , 编写测试内容

 

 

 在IDEA中使用浏览器打开,查看控制台输出!

 

 

 可以看到,我们将js对象转化为json对象时,键值对的属性值已经变为了纯文本格式,而我们用json.parse()方法时,将json对象又转化为js对象,大家在平时中一定要灵活应用。

Controller返回JSON数据

Jackson是目前比较好的json解析工具了

当然工具不止这一个,比如还有阿里巴巴的 fastjson 等等。

我们这里使用Jackson,使用它需要导入它的jar包;

 

 

 配置SpringMVC需要的配置

1)web.xml

 

 

 springmvc-servlet.xml

 

 

 我们随便编写一个User的实体类,然后我们去编写我们的测试Controller;

这里我们需要两个新东西,一个是@ResponseBody,一个是ObjectMapper对象,我们看下具体的用法

编写一个Controller;

 

 

 配置tommcat,测试一下

http://localhost:8080/json1

 

 

 可以看到乱码了,我们需要设置一下它的编码格式为utf-8

可以通过@requestMapping的produces属性来实现,修改下列代码

 

 

 当然啦,这种方法比较麻烦,如果项目中有许多请求那么每一种方法都要添加,所以我们可以通过spring配置统一指定,这样就不用每次都去处理了,

我们可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!

 

 

 

我们也可以在类上直接使用 @RestController ,这样子,里面所有的方法都只会返回 json 字符串了,不用再每一个都添加@ResponseBody !

我们在前后端分离开发中,一般都使用 @RestController ,十分便捷!

 

 

 启动tomcat测试,结果都正常输出!

测试集合输出

增加一个新的方法

@RequestMapping("/j2")
public String json2() throws JsonProcessingException {

//创建一个jackson的对象映射器,用来解析数据
ObjectMapper mapper = new ObjectMapper();
//创建一个对象
User user1 = new User("心心1号", 3, "女");
User user2 = new User("心心2号", 3, "女");
User user3 = new User("心心3号", 3, "女");
User user4 = new User("心心4号", 3, "女");
List<User> list = new ArrayList<User>();
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);

//将我们的对象解析成为json格式
String str = mapper.writeValueAsString(list);
return str;
}

运行结果 : 十分完美,没有任何问题!

 

下面我们来看看输出时间对象,输出时间对象我认为非常有意思

增加一个新的方法

 

 运行结果:

 

jackson会默认把时间转成timestamps形式,我在上面使用了自定义日期格式,,这样看起来就更加直观享受

因为如果要经常使用的话,是比较麻烦的,所以我们将这些代码封装到一个工具类中,

 

 

这样我们使用工具类就特别方便快捷

 

 

以上就是Json的基本用法,我们在平时中要熟练掌握,因为它在我们的数据传输中特别重要!

 

 

 

posted @   快乐放屁修勾  阅读(35)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
Fork me on GitHub
点击右上角即可分享
微信分享提示