当前位置: 首页 > news >正文

前后端中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);}
}
  1. ObjectMapper: 这是Jackson库中的一个核心类,用于处理JSON数据的读写。
  2. parseJson: 该方法接收一个JSON字符串并将其解析为JsonNode对象,方便后续操作。
  3. 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数据的简单处理

很多时候因为数据库中不想创建中间表去存一些数据&#xff0c;所以在一个实体表中用一个json字段去存储并处理这些数据。本人倾向在前端js部分直接处理json数据&#xff0c;后端只做存储&#xff0c;不做处理。 前端在获取表单的时候解析 toEdit(row) {this.editForm { ...ro…...

Java爬虫:深入解析商品详情的利器

在数字化时代&#xff0c;信息的获取与处理能力成为了企业竞争力的关键。特别是在电商领域&#xff0c;商品详情的获取与分析对于市场趋势的把握、竞争对手的分析以及消费者行为的研究至关重要。Java作为一种成熟且功能强大的编程语言&#xff0c;其在爬虫技术中的应用尤为广泛…...

新型大语言模型的预训练与后训练范式,阿里Qwen

前言&#xff1a;大型语言模型&#xff08;LLMs&#xff09;的发展历程可以说是非常长&#xff0c;从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初&#xff0c;LLM的训练过程只关注预训练&#xff0c;但后来逐步扩展到了包括预训练和后训练在内的完整…...

深入理解 Dubbo 如何动态感知服务下线

在现代分布式系统中&#xff0c;服务的上下线管理是非常重要的功能&#xff0c;尤其是服务动态扩展与缩减的需求日益频繁。在这种环境中&#xff0c;如何确保消费者能够实时感知到服务的状态变化&#xff0c;减少因服务失效导致的调用失败&#xff0c;直接影响系统的可用性和用…...

VSCode 下载 安装

VSCode【下载】【安装】【汉化】【配置C环境&#xff08;超快&#xff09;】&#xff08;Windows环境&#xff09;-CSDN博客 Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/Downloadhttps://code.visualstudio.com/Download 注意&#xff0…...

局域网的网络安全

网络安全 局域网基本上都采用以广播为技术基础的以太网&#xff0c;任何两个节点之间的通信数据包&#xff0c;不仅为这两个节点的网卡所接收&#xff0c;也同时为处在同一以太网上的任何一个节点的网卡所截取。因此&#xff0c;黑客只要接入以太网上的任一节点进行侦听&#…...

VMware ubuntu创建共享文件夹与Windows互传文件

1.如图1所示&#xff0c;点击虚拟机&#xff0c;点击设置&#xff1b; 图1 2.如图2所示&#xff0c;点击选项&#xff0c;点击共享文件夹&#xff0c;如图3所示&#xff0c;点击总是启用&#xff0c;点击添加&#xff1b; 图2 图3 3.如图4所示&#xff0c;出现命名共享文件夹…...

TCP/IP网络编程-C++(上)

TCP/IP网络编程-C &#xff08;上&#xff09; 一、基于TCP的服务端/客户端1、server端代码2、client端代码3、socket() 函数3.1、函数原型3.2、参数解析3.2.1、协议族&#xff08;domain参数&#xff09;3.2.2、套接字类型&#xff08;type参数&#xff09;3.2.3、最终使用的协…...

React Hooks中use的细节

文档 useState useState如果是以函数作为参数&#xff0c;那要求是一个纯函数&#xff0c;不接受任何参数&#xff0c;同时需要一个任意类型的返回值作为初始值。 useState可以传入任何类型的参数作为初始值&#xff0c;当以一个函数作为参数进行传入的时候需要注意&#xff…...

通信网络安全分层及关键技术解决

要实现信息化&#xff0c;就必须重视信息网络安全。信息网络安全绝不仅是IT行业的问题&#xff0c;而是一个社会问题&#xff0c;是一个包括多学科的系统安全工程问题&#xff0c;并直接关系到国家安全。因此&#xff0c;知名安全专家沈昌祥院士呼吁&#xff0c;要像重视两弹一…...

C++ 面向对象包含哪些设计原则

设计模式是由设计原则迭代出来的 开闭原则&#xff1a;一个类应该对扩展开放&#xff0c;对修改关闭 稳定的部分稳定住&#xff0c;变化的部分扩展 扩展可以通过继承和组合 相关原则&#xff1a;单一职责原则、里氏替换原则、接口隔离原则 单一职责原则&#xff1a;一个类应该…...

微信小程序首页搜索框的实现教程

微信小程序首页搜索框的实现教程 前言 在现代移动应用中,搜索功能是用户获取信息的主要方式之一。对于购物小程序而言,提供一个美观且高效的搜索框,可以显著提升用户体验,帮助用户快速找到他们想要的商品。本文将详细介绍如何在微信小程序中实现一个样式优美的搜索框,包…...

android集成FFmpeg步骤以及常用命令,踩坑经历

1、入坑第一步&#xff1a;首先集成的库必须正确。最好是有ndk的&#xff0c;FFmpeg有许多个版本&#xff0c;我才开始接触的时候随便选了一个&#xff0c;一般的 方法没有问题。但是涉及到需要使用libx264等条件进行编码时&#xff0c;老是报错&#xff0c;网上搜索资料也没有…...

Go错误与日志处理—推荐实践

错误的分类 在 Go 语言中&#xff0c;错误是通过实现 error 接口的类型表示的&#xff0c;但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类&#xff0c;以及每类错误的解释和示例&#xff1a; 标准错误类型 标准库中定义了许多常见的错误类型&…...

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注入时&#xff0c;经常利用updatexml()的报错特性来脱库。 updatexml报错原理 1、updatexml语法参数2、报错原理分析3、使用updatexml()脱库4、分割显示结果 updatexml() 的作用是修改xml文件的内容。 1、updatexml语法参数 updatexml(参数1&#x…...

蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)

下将以括号序列、组合数问题超级吧难的题为例子讲解动态规划 别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! ! &#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 动态规划 一、数字三角形 【问题描述】 上图给出了…...

【Qt】重写QComboBox下拉展示多列数据

需求 点击QComboBox时&#xff0c;下拉列表以多行多列的表格展示出来。 实现 直接上代码&#xff1a; #include <QComboBox> #include <QTableWidget> #include <QVBoxLayout> #include <QWidget> #include <QEvent> #include <QMouseEve…...

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)

1、打开终端 2、步骤 &#xff08;1&#xff09;修改~/.zshrc文件 nano ~/.zshrc&#xff08;2&#xff09;添加或修改PS1&#xff0c;我是自定义了名字为“macminiPro” export PS1"macminiPro$ "&#xff08;3&#xff09;使用 nano: Ctrl o &#xff08;字母…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要 神经影像技术对医学科学产生了深远的影响&#xff0c;推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下&#xff0c;基于神经血管耦合现象的多模态神经影像方法&#xff0c;通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里&#xff0c;本研…...

用js实现常见排序算法

以下是几种常见排序算法的 JS实现&#xff0c;包括选择排序、冒泡排序、插入排序、快速排序和归并排序&#xff0c;以及每种算法的特点和复杂度分析 1. 选择排序&#xff08;Selection Sort&#xff09; 核心思想&#xff1a;每次从未排序部分选择最小元素&#xff0c;与未排…...