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

SpringBoot——如何读写使用JSON文件保存的数据

文章目录

  • 1. 将数据写入JSON文件
  • 2. 从JSON文件读取数据
    • 2.1 读取单个对象
    • 2.2 读取对象列表

1. 将数据写入JSON文件

要将数据写入JSON文件,可以使用Spring Boot中提供的Jackson库。Jackson库是处理JSON的Java库,可以轻松地将对象转换为JSON字符串,并将其写入文件。

首先,确保你的Spring Boot项目中已经引入了Jackson库的依赖。在pom.xml文件中添加以下依赖:

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>

接下来,创建一个包含数据的Java对象。这个对象将被转换为JSON格式并写入文件。假设你有一个Person类,表示一个人的信息:

public class Person {private String name;private int age;// 构造函数、getter和setter等方法// 省略其他代码
}

现在,可以使用ObjectMapper类将对象转换为JSON字符串,并将其写入文件。

示例代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;public class JsonFileWriter {public void writeJsonToFile(Person person) {ObjectMapper objectMapper = new ObjectMapper();try {objectMapper.writeValue(new File("person.json"), person);System.out.println("JSON文件写入成功!");} catch (IOException e) {System.out.println("JSON文件写入失败:" + e.getMessage());}}
}

在上面的示例中,ObjectMapper类的writeValue()方法接受两个参数:文件对象和要写入文件的对象。在这个例子中,我们将person对象写入名为person.json的文件中。

调用writeJsonToFile()方法将触发写入操作:

Person person = new Person();
person.setName("Alice");
person.setAge(25);JsonFileWriter jsonFileWriter = new JsonFileWriter();
jsonFileWriter.writeJsonToFile(person);

执行上述代码后,会在项目根目录下生成一个名为person.json的文件,内容如下:

{"name":"Alice","age":25}

这就是将数据写入JSON文件的简单示例。可以根据自己的需要进行扩展和调整。

2. 从JSON文件读取数据

2.1 读取单个对象

可以使用ObjectMapper类来读取JSON文件并将其转换为Java对象。

示例代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;public class JsonFileReader {public Person readJsonFromFile() {ObjectMapper objectMapper = new ObjectMapper();try {Person person = objectMapper.readValue(new File("person.json"), Person.class);System.out.println("JSON文件读取成功!");return person;} catch (IOException e) {System.out.println("JSON文件读取失败:" + e.getMessage());return null;}}
}

在上述示例中,ObjectMapper类的readValue()方法接受两个参数:文件对象和要将JSON数据转换为的对象类型。在这个例子中,我们将JSON文件person.json读取并将其转换为Person对象。

调用readJsonFromFile()方法将触发读取操作:

JsonFileReader jsonFileReader = new JsonFileReader();
Person person = jsonFileReader.readJsonFromFile();if (person != null) {System.out.println("姓名:" + person.getName());System.out.println("年龄:" + person.getAge());
}

执行上述代码后,将从person.json文件中读取数据并将其打印到控制台:

姓名:Alice
年龄:25

2.2 读取对象列表

假设你有一个JSON文件名为data.json,其中包含了一个对象列表,如下所示:

[{"name": "Alice", "age": 25},{"name": "Bob", "age": 30},{"name": "Charlie", "age": 35}
]

可以使用ObjectMapper类来读取JSON文件并将其转换为对象列表。

示例代码:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;
import java.util.List;public class JsonFileReader {public List<Person> readJsonFromFile() {ObjectMapper objectMapper = new ObjectMapper();try {File file = new File("data.json");List<Person> personList = objectMapper.readValue(file, new TypeReference<List<Person>>() {});System.out.println("JSON文件读取成功!");return personList;} catch (IOException e) {System.out.println("JSON文件读取失败:" + e.getMessage());return null;}}
}

在上述示例中,ObjectMapper类的readValue()方法接受两个参数:JSON文件对象和一个TypeReference对象,用于指定要转换的对象类型。在这个例子中,我们将JSON文件转换为List<Person>对象。

调用readJsonFromFile()方法将触发读取操作:

JsonFileReader jsonFileReader = new JsonFileReader();
List<Person> personList = jsonFileReader.readJsonFromFile();if (personList != null) {for (Person person : personList) {System.out.println("姓名:" + person.getName());System.out.println("年龄:" + person.getAge());}
}

执行上述代码后,将从data.json文件中读取列表数据,并将每个人的姓名和年龄打印到控制台。

相关文章:

SpringBoot——如何读写使用JSON文件保存的数据

文章目录 1. 将数据写入JSON文件2. 从JSON文件读取数据2.1 读取单个对象2.2 读取对象列表 1. 将数据写入JSON文件 要将数据写入JSON文件&#xff0c;可以使用Spring Boot中提供的Jackson库。Jackson库是处理JSON的Java库&#xff0c;可以轻松地将对象转换为JSON字符串&#xff…...

SDU Crypto School - 计算不可区分性1

Encryption: Computational security 1-4 主讲人&#xff1a;李增鹏&#xff08;山东大学&#xff09; 参考教材&#xff1a;Jonathan Katz, Yehuda Lindell, Introduction to Modern Cryptography - Principles and Protocols. 什么是加密 首先&#xff0c;加密方案的目的在于…...

win11 vscode torch 编译遇错

1. 错误内容&#xff1a; Failed to build pc-util ERROR: Could not build wheels for pc-util, which is required to install pyproject.toml-based projects NativeCommandExitException: Program “pip.exe” ended with non-zero exit code: 2.问题分析&#xff1a; pip出…...

Markdown系列之Flowchat流程图

一.欢迎来到我的酒馆 介绍Markdown的Flowchart流程图语法。 目录 一.欢迎来到我的酒馆二.什么是Flowchart三.更进一步 二.什么是Flowchart 2.1 Flowchart是一款基于javascript的工具&#xff0c;使用它可以用代码创建简单的流程图。具体信息可以查看flowchart官网&#xff1a;…...

小程序wx:else提示 Bad attr `wx

问题&#xff1a;以下wx:for里的wx:if &#xff0c; wx:else 会报这个错&#xff1a;Bad attr wx <scroll-view class"scroll1" scroll-x enable-flex"true"><view wx:if"{{playlist.length>0}}" class"item" wx:for"…...

halcon 学习笔记

图像的参数 图形参数 Iconic, 包括 image, region, XLD 1.1 image 图像由一个或者多个通道组成&#xff0c;是大小相同的矩阵&#xff0c;包含各种像素类型的灰度值 在图像显示界面&#xff0c;按ctrl健&#xff0c;可以查看当前的像素值 灰度图 一个通道像素点存放在一个矩…...

vscode 设置滑条颜色

1. 默认的滑条是灰黑色的&#xff0c;很难看的清 2. 左下角&#xff0c;打开VS Code 设置功能 3. 输入命令 workbench color&#xff0c;回车 4. 找到工作台&#xff1a;自定义颜色设置&#xff0c;打开设置文件 setting.json 5. 打开配置文件 6. 添加颜色配置 "workben…...

农业大数据可视化平台,让农业数据更直观展现!

农业大数据可视化平台是指利用大数据技术和可视化工具&#xff0c;对农业领域的数据进行收集、整理、分析和展示的平台。它可以帮助农业从业者更好地理解和利用农业数据&#xff0c;提高农业生产效率和决策水平。 农业大数据可视化平台通常具有以下特点和功能&#xff1a; 数据…...

【沁恒蓝牙mesh】CH58x USB功能开发记录(二)

本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能, BLE_USB 工程 解析与修改,主要实现 手机app与节点的数据双向通讯 【沁恒蓝牙mesh】CH58x USB功能开发记录(二) 1. BLE_USB 工程1.1 数据转发接口1.2 PC端测试1.3 手机APP端测试1.4 工程修改实现双向通讯1.4.1 【测试原理图…...

go的type关键字

在 Go 语言中&#xff0c;type 关键字用于定义自定义数据类型&#xff08;类型别名、结构体、接口等&#xff09;&#xff0c;以及获取某个变量的类型信息。type 关键字有多种用法&#xff0c;下面将详细解释这些用法&#xff1a; 1. 自定义数据类型 使用 type 关键字可以定义…...

Linux 信号signal处理机制

Signal机制在Linux中是一个非常常用的进程间通信机制&#xff0c;很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断&#xff0c;因此&#xff0c;在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。 每个进程…...

SpringBoot3之Web编程

标签&#xff1a;Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖&#xff0c;SpringBoot可以快速启动一个web容器&#xff0c;简化项目的开发&#xff1b; 在web开发中又涉及如下几个功能点&#xff1a; 拦截器&#xff1a;可以让接口被访问之前&#xff0c;将请求拦截…...

策略模式(C++)

定义 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可互相替换((变化)。该模式使得算法可独立手使用它的客户程序稳定)而变化(扩展&#xff0c;子类化)。 ——《设计模式》GoF 使用场景 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多…...

【每日一题Day290】LC1281整数的各位积和之差 | 模拟

整数的各位积和之差【LC1281】 给你一个整数 n&#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 思路&#xff1a;简单模拟 循环取余&#xff0c;计算「各位数字之积」与「各位数字之和」&#xff0c;最后求差返回 实现 class Solution {public…...

揭示CTGAN的潜力:利用生成AI进行合成数据

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 我们都知道&#xff0c;GAN在生成非结构化合成数据&#xff08;如图像和文本&#xff09;方面越来越受欢迎。然而&#xff0c;在使用GAN生成合成表格数据方面所做的工作很少。合成数据具有许多好处&#x…...

GitHub中readme.md文件的编辑和使用

GitHub中readme.md文件的编辑和使用 | YuuiChungs BlogGitHub - guodongxiaren/README: README文件语法解读&#xff0c;即Github Flavored Markdown语法介绍...

Python 四舍五入到最接近的十位

本篇文章将讨论使用 Python 的 ceil() 函数将数字四舍五入到最接近的十。 Python 整数到最接近的十 Python 具有三个内置函数 round()、floor() 和 ceil()&#xff0c;可用于对数字进行舍入。 ceil() 函数属于数学模块&#xff0c;用于将浮点数舍入为大于或等于给定数字的最接…...

Unity限制在一个范围内移动

Unity限制在一个范围内移动 这个例子中&#xff0c;我们学习Vector3.ClampMagnitude的用法&#xff0c;限制小球在范围内移动。 在地图上放了一个小球&#xff0c;让他移动&#xff0c;但是不想让他掉下去&#xff0c;限制在一个球星范围内&#xff0c;就好像绳子拴住了一样&…...

dji uav建图导航系列(一)建图

文章目录 1、uav + rplidir雷达1.2、思岚激光雷达1.3、dji uav的launch文件2、cartographer激光建图2.1、启动文件2.2、config修改2.3、建图过程3、融合odom+laser建图1、uav + rplidir雷达 思岚激光雷达frame为base_laser_link, 无人机frame为base_footprint。 文件uav_lid…...

AAAI论文阅读

文章目录 Open-Vocabulary Multi-Label Classifcation via Multi-Modal Knowledge Transfer——知识蒸馏的范畴Med-EASi: Finely Annotated Dataset and Models for Controllable Simplifcation of Medical Texts——医学领域数据集构建“Nothing Abnormal”: Disambiguating M…...

填补5G物联一张网,美格智能快速推进RedCap商用落地

自5G R17版本标准冻结以来&#xff0c;RedCap一直引人注目。2023年更是5G RedCap突破性发展的一年&#xff0c;从首款5G RedCap调制解调器及射频系统——骁龙X35发布&#xff0c;到国内四大运营商发布RedCap技术白皮书&#xff0c;芯片厂商、模组厂商、运营商及终端企业都在积极…...

服务器杂七杂八的知识/常识归纳(不断更新)

一.pID与端口号不一样吗? pID&#xff08;Process ID&#xff0c;进程标识符&#xff09;和端口号是不同的概念。 pID是操作系统中用来唯一标识一个正在运行的进程的数字。每个正在运行的进程都会被分配一个唯一的pID&#xff0c;它可以用来追踪和管理进程。 而端口号是在网…...

掌握Java排序算法:实现主流排序方法与性能对比

一&#xff0c;C语言&#xff0c;主流的排序方法介绍 当谈论主流的排序方法时&#xff0c;通常指的是在实际应用中表现优秀且被广泛采用的排序算法。以下是常见的主流排序方法及其介绍、时间复杂度、空间复杂度和简单的C语言代码实现&#xff1a; 冒泡排序&#xff08;Bubble S…...

jdk17 SpringBoot JPA集成多数据库

switchRegion(切换地区)功能, 客户端可手动切换地区 , 查询不同的数据库, 后台根据地区切换数据库, 请求头添加region的key 配置类 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; im…...

vue 新学习 06 js的prototype ,export暴露,vue组件,一个重要的内置关系

01 在js中&#xff1a; 原型链 注意&#xff1a;构造函数.prototype实例化对象.__proto__&#xff0c;都是指向函数的原型。 export&#xff1a; -export用于对外输出本模块&#xff08;一个文件可以理解为一个模块&#xff09;变量的接口 -import用于在一个模块中加载另一个…...

冠达管理:“高温超导”不是“室温超导”,5天4板百利电气再次澄清

短短半个月&#xff0c;“室温超导”在惊喜、质疑间回转&#xff0c;但资本市场对“超导概念股”的炒作还在进行&#xff0c;8月7日室温超导概念持续疯涨。同花顺显现&#xff0c;到8月7日收盘&#xff0c;18只超导概念股中&#xff0c;有16只股票飘红。 广东研山私募证券投资&…...

CS 144 Lab Four 收尾 -- 网络交互全流程解析

CS 144 Lab Four 收尾 -- 网络交互全流程解析 引言Tun/Tap简介tcp_ipv4.cc文件配置信息初始化cs144实现的fd家族体系基于自定义fd体系进行数据读写的adapter适配器体系自定义socket体系自定义事件循环EventLoop模板类TCPSpongeSocket详解listen_and_accept方法_tcp_main方法_in…...

Linux面试专题

Linux面试专题 1 Linux中主要有哪几种内核锁?2 Linux 中的用户模式和内核模式是什么含意?3 怎样申请大块内核内存?4用户进程间通信主要哪几种方式?5通过伙伴系统申请内核内存的函数有哪些?6) Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)7) 对文件或设备的操作…...

MySQL错误日志(Error Log)详解

错误日志&#xff08;Error Log&#xff09;是 MySQL 中最常用的一种日志&#xff0c;主要记录 MySQL 服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。 作为初学者&#xff0c;要学会利用错误日志来定位问题。下面介绍如何操作查看错误日志。 启动…...

Qt应用开发(基础篇)——LCD数值类 QLCDNumber

一、前言 QLCDNumber类继承于QFrame&#xff0c;QFrame继承于QWidget&#xff0c;是Qt的一个基础小部件。 QLCDNumber用来显示一个带有类似lcd数字的数字&#xff0c;适用于信号灯、跑步机、体温计、时钟、电表、水表、血压计等仪器类产品的数值显示。 QLCDNumber可以显示十进制…...

自建站怎么接入支付/拉新推广怎么找渠道

一、概述 原始视频帧&#xff08;最原始的视频数据&#xff09;根据编码的需要&#xff0c;以不同的方式进行扫描产生两种视频帧&#xff1a;连续或隔行视频帧&#xff0c;隔行视频帧包括顶场和底场&#xff0c;连续&#xff08;遂行&#xff09;扫描的视频帧与隔行扫描视频帧有…...

星巴克网站开发票/怎么做个网站

先上一个不修改的样式&#xff0c;如下&#xff1a; import easygui as gg.msgbox("hello","hi")注意左上角的图标为红色的Tk字样 修改后&#xff1a; import easygui as g from Tkinter import * tk Tk()tk.iconbitmap(default rC:\Users\xxoo\Download…...

开发公司工程部绩效考核管理办法/seo优化主要工作内容

【发包工具】http多线程发包工具 使用方法&#xff1a;输入地址&#xff0c;发送的内容&#xff0c;线程数&#xff0c;等待时间&#xff0c;每个线程发送的次数&#xff0c;GET/POST请求。 源代码 package com.xmxkkk.httptest; import java.awt.*; import java.awt.event.*; …...

领动营销网站建设/手机网站排名优化

记得看过一个数据&#xff0c;中国软件企业 50人以下的公司数量达到 70% 以上&#xff0c;规模普遍偏小。我想这 70% 中至少有 80% 还是小作坊的研发模式&#xff0c;"三五个人&#xff0c;十来条枪"&#xff0c;有一部分企业偏居一隅&#xff0c;远离信息技术发达城…...

国外化妆品网站模板/青岛seo网站推广

Oracle创建实例的最少参数需求我们知道,Oracle在启动过程中,需要读取参数文件(pfile/spfile)来创建实例.Oracle在启动过程中,寻找参数文件的顺序为:spfile.ora,spfile.ora,init.ora.而创建实例的过程中,Oracle需要的最少参数为一个,即db_name参数.我们来看一个测试,启动一个任意…...

桂林北站疫情防控最新消息/seo排名优化表格工具

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022高压电工复审题库为高压电工模拟考试题库考前必练习题目&#xff01;2022高压电工理论题库及在线模拟考试根据高压电工新版教材大纲编写。高压电工模拟考试试题随时根据安全生产模拟考试一点通上查找答案。 1、【…...