前后端中Json数据的简单处理
很多时候因为数据库中不想创建中间表去存一些数据,所以在一个实体表中用一个json字段去存储并处理这些数据。本人倾向在前端js部分直接处理json数据,后端只做存储,不做处理。
前端在获取表单的时候解析
toEdit(row) {this.editForm = { ...row };this.$nextTick(() => {let checkedKeys = JSON.parse(this.yourForm.jsonField);;checkedKeys.forEach((v) => {this.$nextTick(() => {this.$refs.menu.setChecked(v, true, false);});});});
前端在提交表单的时候转换
submitForm(formName) {this.$refs[formName].validate((valid) => {if (valid) {this.yourForm.jsonField = JSON.stringify(this.getMenuAllCheckedKeys());
如果实在想在后端处理,写个json工具类去处理。
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;import java.util.List;public class JsonParserUtil {private static final ObjectMapper objectMapper = new ObjectMapper();/*** 将JSON字符串解析为JsonNode对象** @param jsonString 要解析的JSON字符串* @return JsonNode对象* @throws JsonProcessingException 如果解析失败*/public static JsonNode parseJson(String jsonString) throws JsonProcessingException {return objectMapper.readTree(jsonString);}/*** 将JSON字符串解析为指定类型的对象** @param jsonString 要解析的JSON字符串* @param valueType 目标类型* @param <T> 目标类型的泛型* @return 转换后的对象* @throws JsonProcessingException 如果转换失败*/public static <T> T parseJsonToObject(String jsonString, Class<T> valueType) throws JsonProcessingException {JsonNode jsonNode = parseJson(jsonString);return objectMapper.treeToValue(jsonNode, valueType);}/*** 将JSON字符串解析为指定类型的列表** @param jsonString 要解析的JSON字符串* @param valueType 目标类型* @param <T> 目标类型的泛型* @return 转换后的列表* @throws JsonProcessingException 如果转换失败*/public static <T> List<T> parseJsonToList(String jsonString, Class<T> valueType) throws JsonProcessingException {JsonNode jsonNode = parseJson(jsonString);return objectMapper.convertValue(jsonNode, objectMapper.getTypeFactory().constructCollectionType(List.class, valueType));}/*** 将对象转换为JSON字符串** @param object 要转换的对象* @return JSON字符串* @throws JsonProcessingException 如果转换失败*/public static String convertObjectToJson(Object object) throws JsonProcessingException {return objectMapper.writeValueAsString(object);}/*** 将列表转换为JSON字符串** @param list 要转换的列表* @return JSON字符串* @throws JsonProcessingException 如果转换失败*/public static String convertListToJson(List<?> list) throws JsonProcessingException {return objectMapper.writeValueAsString(list);}
}
- ObjectMapper: 这是Jackson库中的一个核心类,用于处理JSON数据的读写。
- parseJson: 该方法接收一个JSON字符串并将其解析为
JsonNode
对象,方便后续操作。 - convertJsonNodeToObject: 该方法将
JsonNode
对象转换为指定类型的Java对象,使用泛型来支持不同类型的转换。
使用示例
import com.example.utils.JsonParserUtil;
import com.fasterxml.jackson.core.JsonProcessingException;public void processJsonField(String jsonField, boolean isList) {try {if (isList) {List<MyObject> myObjectList = JsonParserUtil.parseJsonToList(jsonField, MyObject.class);// 处理myObjectListString jsonList = JsonParserUtil.convertListToJson(myObjectList);// 使用jsonList} else {MyObject myObject = JsonParserUtil.parseJsonToObject(jsonField, MyObject.class);// 处理myObjectString jsonObject = JsonParserUtil.convertObjectToJson(myObject);// 使用jsonObject}} catch (JsonProcessingException e) {e.printStackTrace();// 处理解析异常}
}
相关文章:
前后端中Json数据的简单处理
很多时候因为数据库中不想创建中间表去存一些数据,所以在一个实体表中用一个json字段去存储并处理这些数据。本人倾向在前端js部分直接处理json数据,后端只做存储,不做处理。 前端在获取表单的时候解析 toEdit(row) {this.editForm { ...ro…...
Java爬虫:深入解析商品详情的利器
在数字化时代,信息的获取与处理能力成为了企业竞争力的关键。特别是在电商领域,商品详情的获取与分析对于市场趋势的把握、竞争对手的分析以及消费者行为的研究至关重要。Java作为一种成熟且功能强大的编程语言,其在爬虫技术中的应用尤为广泛…...

新型大语言模型的预训练与后训练范式,阿里Qwen
前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整…...
深入理解 Dubbo 如何动态感知服务下线
在现代分布式系统中,服务的上下线管理是非常重要的功能,尤其是服务动态扩展与缩减的需求日益频繁。在这种环境中,如何确保消费者能够实时感知到服务的状态变化,减少因服务失效导致的调用失败,直接影响系统的可用性和用…...

VSCode 下载 安装
VSCode【下载】【安装】【汉化】【配置C环境(超快)】(Windows环境)-CSDN博客 Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/Downloadhttps://code.visualstudio.com/Download 注意࿰…...
局域网的网络安全
网络安全 局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截取。因此,黑客只要接入以太网上的任一节点进行侦听&#…...

VMware ubuntu创建共享文件夹与Windows互传文件
1.如图1所示,点击虚拟机,点击设置; 图1 2.如图2所示,点击选项,点击共享文件夹,如图3所示,点击总是启用,点击添加; 图2 图3 3.如图4所示,出现命名共享文件夹…...
TCP/IP网络编程-C++(上)
TCP/IP网络编程-C (上) 一、基于TCP的服务端/客户端1、server端代码2、client端代码3、socket() 函数3.1、函数原型3.2、参数解析3.2.1、协议族(domain参数)3.2.2、套接字类型(type参数)3.2.3、最终使用的协…...

React Hooks中use的细节
文档 useState useState如果是以函数作为参数,那要求是一个纯函数,不接受任何参数,同时需要一个任意类型的返回值作为初始值。 useState可以传入任何类型的参数作为初始值,当以一个函数作为参数进行传入的时候需要注意ÿ…...
通信网络安全分层及关键技术解决
要实现信息化,就必须重视信息网络安全。信息网络安全绝不仅是IT行业的问题,而是一个社会问题,是一个包括多学科的系统安全工程问题,并直接关系到国家安全。因此,知名安全专家沈昌祥院士呼吁,要像重视两弹一…...
C++ 面向对象包含哪些设计原则
设计模式是由设计原则迭代出来的 开闭原则:一个类应该对扩展开放,对修改关闭 稳定的部分稳定住,变化的部分扩展 扩展可以通过继承和组合 相关原则:单一职责原则、里氏替换原则、接口隔离原则 单一职责原则:一个类应该…...
微信小程序首页搜索框的实现教程
微信小程序首页搜索框的实现教程 前言 在现代移动应用中,搜索功能是用户获取信息的主要方式之一。对于购物小程序而言,提供一个美观且高效的搜索框,可以显著提升用户体验,帮助用户快速找到他们想要的商品。本文将详细介绍如何在微信小程序中实现一个样式优美的搜索框,包…...
android集成FFmpeg步骤以及常用命令,踩坑经历
1、入坑第一步:首先集成的库必须正确。最好是有ndk的,FFmpeg有许多个版本,我才开始接触的时候随便选了一个,一般的 方法没有问题。但是涉及到需要使用libx264等条件进行编码时,老是报错,网上搜索资料也没有…...
Go错误与日志处理—推荐实践
错误的分类 在 Go 语言中,错误是通过实现 error 接口的类型表示的,但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类,以及每类错误的解释和示例: 标准错误类型 标准库中定义了许多常见的错误类型&…...
Android 13 Aosp Settings Android Studio版本
Android 13 Aosp Settings Android Studio版本 Settings相关源码 Settings https://android.googlesource.com/platform/packages/apps/Settings/+/refs/heads/android13-release SettingsIntelligence https://android.googlesource.com/platform/packages/apps/SettingsIn…...

Jedis存储一个以byte[]的形式的对象到Redis
1.1 准备一个User实体类 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable; import java.util.Date;Data NoArgsConstructor AllArgsConstructor public class User implements Serializable {private In…...

updatexml报错注入原理分析
《网络安全自学教程》 SQL注入时,经常利用updatexml()的报错特性来脱库。 updatexml报错原理 1、updatexml语法参数2、报错原理分析3、使用updatexml()脱库4、分割显示结果 updatexml() 的作用是修改xml文件的内容。 1、updatexml语法参数 updatexml(参数1&#x…...

蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)
下将以括号序列、组合数问题超级吧难的题为例子讲解动态规划 别忘了请点个赞收藏关注支持一下博主喵!!!! ! ! ! ! 关注博主,更多蓝桥杯nice题目静待更新:) 动态规划 一、数字三角形 【问题描述】 上图给出了…...

【Qt】重写QComboBox下拉展示多列数据
需求 点击QComboBox时,下拉列表以多行多列的表格展示出来。 实现 直接上代码: #include <QComboBox> #include <QTableWidget> #include <QVBoxLayout> #include <QWidget> #include <QEvent> #include <QMouseEve…...

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)
1、打开终端 2、步骤 (1)修改~/.zshrc文件 nano ~/.zshrc(2)添加或修改PS1,我是自定义了名字为“macminiPro” export PS1"macminiPro$ "(3)使用 nano: Ctrl o (字母…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...