关于json的理解测试!!

(本文展示部分controller层的编码)

做过测试的都知道如下代码

java 复制代码
@GetMapping("/user")
public User getUser() {
    return new User(1, "张三", 18);
}

浏览器访问http://localhost:8080/user时,会出现:

{

"id": 1,

"name": "张三",

"age": 18

}

那么原理为何?有何特点?

  1. 处理流程
bash 复制代码
Java 对象
   ↓
Jackson 序列化
   ↓
JSON 字符串
   ↓
返回给浏览器
  1. getter!!!

问getter是什么的可以看一下java基础了,那么getter的作用是什么?

Jackson 在转换时:不是直接访问字段,而是通过:getter

这个其实很好理解,因为规范编码下实体类中的属性一般是private,所以需要getter作为媒介,如果换成public当然不用getter,但规范如此。

那么对于下述代码呢?

java 复制代码
@GetMapping("/test")
public String test() {
    return "hello";
}

现在你没经过测试那么告诉我浏览器此时显示的是hello还是"hello"。

...(testing)答案是hello

why?-因为String(即普通文本)不会走jackson 会直接写入响应体(即浏览器真正显示的内容)

tip:大家不用纠结这个运行过程是什么,这里是spring自动处理的,另外大家的重点应该在于浏览器接收到了什么而不是处理流程

总结:

返回类型 浏览器看到什么 原因
Java 对象 JSON Jackson 序列化
String 文本(不带引号) 直接输出文本

小测试:(欢迎评论区回复)

java 复制代码
@GetMapping("/test")
public String test() {
    return "<h1>你好</h1>";
}

在浏览器端看到是

A. "<h1>你好</h1>"

B.<h1>你好</h1>

C. h1样式的你好

相关推荐
迅猛龙办公室5 分钟前
python实现倒序输出数字
开发语言·python
夏幻灵6 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码6 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
bkspiderx8 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆8 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光8 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
码云数智-园园8 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
禾小西9 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨9 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
徐小黑ACG10 小时前
Golang 基础05 结构体struct
开发语言·算法·golang