java transient关键字 JSON序列化问题

news2024/11/25 22:33:49

今天做项目的时候,遇到了一个奇怪的事情看图:
在这里插入图片描述
在这个JSONObject中是有这个object对象的,但是我输出的的却没有这个对象,这是怎么回事?
在这里插入图片描述
这样不明显我换一个方式去输出
在这里插入图片描述
在这里插入图片描述
我在查看了代码之后发现了我的ResponseStatus这个类中有一个object对象,这个对象上有transient关键字,而后我查询了一下这个关键字。
在Java中,如果一个字段被标记为transient关键字修饰,那么它将不会随对象的序列化或反序列化而被存储或载入。
但是这个又有问题出来了,我这个对象,是通过JSONObject传入前端,那前端是怎么接收到我这个对象的呢?类似于这个图:
在这里插入图片描述
我又带着这个问题去看springboot随后得到资料:
当使用Java默认的序列化机制(即实现Serializable接口)对对象进行序列化时,transient关键字会导致被修饰的属性不会被序列化到二进制数据中。但是在使用SpringBoot自动转换JSON字符串时,SpringBoot使用的是Jackson库,而Jackson库会利用Java反射机制来获取对象的所有属性(包括transient标记的属性),再将它们转换为JSON格式的字符串。因此,在使用SpringBoot将一个JSON字符串返回给前端时,如果JSONObject对象中包含private transient标记的属性object,则Jackson库会忽略掉该属性上的transient标记,正常地把该属性的值转换成JSON格式的字符串并添加到返回的JSON对象中返回给客户端。在反序列化JSON字符串时同理,Jackson库也会将JSON字符串中的内容转换为相应的Java对象的所有属性值,包括transient标记的属性。
这下彻底搞明白了。
那我就要输出这个object该怎么办呢?我们可以利用java内部的类来实现这个需求。
案例代码:

   public static void main(String[] args) throws JsonProcessingException {
        JSONObject successStatus = ResponseStatus.createSuccessStatus("登录成功", (Object) 1);
        ObjectMapper objectMapper = new ObjectMapper();
        System.out.println(objectMapper.writeValueAsString(successStatus));
    }

ObjectMapper的writeValueAsString该方法可用于将任何Java值序列化为字符串。在功能上等效于用StringWriter调用writeValue(Writer,Object)并构造String,但效率更高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构-查找-树形结构(二叉排序树、二叉平衡树、红黑树、B树、B+树)查找

目录 一、二叉排序树(BST) 查询 插入 构造二叉排序树 *删除 *查找效率分析 二、二叉平衡树 *插入数据保持平衡 LL ​编辑 RR LR RL 结 *查找效率分析 删除 三、红黑树 *插入 *删除 四、B树 *插入 *删除 五、B树 一、二叉排序树(BST) 定义:二叉排序…

python的opencv操作记录(13)-增强之直方图均衡化

文章目录 直方图增强基本逻辑-均衡化calcHist && equalizeHistcalcHistequalizeHist 自适应直方图均衡化 前段时间忙活深度网络和android的东西去了,好久没讲讲传统图像处理了,这一篇继续来说说opencv中的传统图像处理部分——图像增强之直方图增…

【谷粒商城之订单服务-RabbitMQ延时队列】

本笔记内容为尚硅谷谷粒商城订单服务锁库存事务最终一致性部分 目录 一、RabbitMQ延时队列 二、具体实现 1、 创建上述队列和路由组件 2、解锁库存 解锁库存的两种情况 1、当订单业务提交后回滚 2、订单取消解锁库存 三、关闭订单 四、消息丢失、挤压、重复等解决方案…

c++ 继承与派生

继承就是在原有类的基础上产生新类,从而减少了代码重复的必要 格式: class A{}; class B:继承方式 A{}; 在c继承中,有以下几点注意 (1)基类的构造函数与析构函数不能被继承 (2)派生类对基类成员的继承没有选择权,不能选择继承…

c++ 常用总结(三)

1.设计模式 GitHub - FengJungle/DesignPattern: Design pattern demo code (一) ① 简单工厂模式 再不学简单工厂模式,就真的要去工厂搬砖啦~_冯Jungle的博客-CSDN博客 通过以下的例子可见,只需要提供产品名称作为参数&…

基于springboot+mysql+SpringDataJPA +html实现学生选课管理系统

基于springbootmysqlSpringDataJPA html实现学生选课管理系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境:4.项目需求 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 管理员&#xf…

【C++】| 03——STL | 迭代器

系列文章目录 【C】| 01——泛型编程 | 模板 【C】| 02——STL | 初识 【C】| 03——STL | 迭代器 【C】| 04——STL | 容器_vector 文章目录 1. 什么是迭代器2. 迭代器的分类3. 不同容器对应的迭代器4. 迭代器的好处5. 迭代器的操作 1. 什么是迭代器 迭代器就是指向容器内元素…

基于MATLAB的路面裂缝检测识别算法代码(GUI系统设计+图像预处理+裂缝检测)

资源地址: 基于MATLAB的路面裂缝检测识别算法代码(GUI系统设计图像预处理裂缝检测)资源-CSDN文库 主要内容: 1、运行Gui_Main.m程序,得到GUI界面 2、首先点击载入图像文件 3、后续便可以点击右侧的其他按钮进行分析…

C++linux高并发服务器项目实践 day10

Clinux高并发服务器项目实践 day10 守护进程进程组会话进程组、会话操作函数守护进程守护进程的创建步骤 线程线程和进程的区别线程之间共享和非共享资源线程操作线程创建线程退出线程参与线程分离线程取消 线程属性 守护进程 在UNIX系统中,用户通过终端登录系统后…

DCMM评估之战略维度沟通

01 数据战略规划过程 过程描述: 过程描述如下:a) 识别利益相关者,明确利益相关者的需求;b) 数据战略需求评估,组织对业务和信息化现状进行评估,了解业务和信息化对数据的需求;c) 数据战略制定,包含但不限于:1) 愿景陈述,其中包含数据管理原则、目的和目标;2) 规划…

SpringCloud 远程调用Feign、网关Gateway、配置中心Nacos、微服务架构小结、Nacos搭建集群

统一检查maven maven依赖出错的解决 注意代码格式化。因代码格式混乱,导致代码出错,pom.xml出现重复的parent标签 学习方法,听得懂为什么要这么做,要远远比 怎么做 重要的多 一、远程调用Feign 能够使用Feign进行远程调用能够…

【C++学习】创建二维动态数组

1.指针 创建二维动态数组_牛客题霸_牛客网 (nowcoder.com) 使用指针的指针 使用指针的指针可以很方便地创建动态的二维数组,其关键在于使用两层指针进行分配。 以下是一个动态创建n行m列的二维数组的示例代码: int **arr new int*[n]; // 创建一个…

深度学习训练营J2:ResNet50v2算法分析与实战

深度学习训练营J2:ResNet50v2算法分析与实战 原文链接环境介绍0.引言论文分析与解读1.ResNet50和ResNet50v2之间的结构对比2.不同结构之间的尝试 3.关于激活的不同尝试4.文章结果 ResNet50v2架构复现5.残差结构6.模块构建7.架构展示以及网络构建 8.网络结构打印ResNet50v2完整结…

Python——1

一、注释 (1)单行注释:#需要注释的内容(#) (2)多行注释:需要注释的内容(三引号) 二、变量及变量类型 1.变量 语法定义:变量名 变量值&#…

【小程序】微信云托管服务

链接 官方文档 云托管官网 特点 无需自提供服务,有云托管平台自动分配,并自动缩容/扩容支持多种语言及模板实例采用容器化管理方式实现服务部署支持小程序内网访问,仅公网测试,提供足够的安全防护,微信用户就近接入…

Python:BeautifulSoup库介绍

BeautifulSoup库介绍 1、BeautifulSoup是Python中的一个第三方库,其最主要的功能是处理HTML文档 ⑴查找HTML文档中的指定标签 ⑵获取HTML文档中指定标签的标签名、标签值、标签属性等 ⑶修改HTML文档中指定标签 2、BeautifulSoup库将HTML文档解析为一…

服务器如何做端口映射,使服务器之间通信,然后访问目标网站(baidu.com)

文章目录 服务器如何做端口映射,使服务器之间通信,然后访问目标网站(baidu.com)问题缘由所需环境操作步骤1. 目的服务器设置2. 中间服务器设置3. 修改客户端 总结 服务器如何做端口映射,使服务器之间通信,然后访问目标…

DataX读取Hive Orc格式表丢失数据处理记录

文章目录 问题问题概述问题详细描述 原因解决方法修改源码验证 问题 问题概述 DataX读取Hive Orc存储格式表数据丢失 问题详细描述 同步Hive表将数据发送到Kafka,Hive表A数据总量如下 SQL:select count(1) from A; 数量:19397281使用Dat…

HTML小游戏25 —— HTML5拉杆子过关小游戏(附完整源码)

本节教程我会带大家使用 HTML 、CSS和 JS 来制作一个HTML5拉杆子过关小游戏 ✨ 前言 🕹️ 本文已收录于🎖️100个HTML小游戏专栏:100个H5游戏专栏https://blog.csdn.net/qq_53544522/category_12064846.html🎮 目前已有100小游戏…

交叉编译--build、--host、--target、--prefix

一、编译例子 ./configure --build编译平台 --host运行平台 --target目标平台 [各种编译参数]build:表示目前我们正在运行的平台名称是什么,如:当前我们是在电脑上编译该系统,那么我们的 --build 就可能是 x86,如果…