当前位置: 首页 > 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;字母…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...