배경:
직장에서 한 환경의 일부 데이터를 다른 환경으로 빠르게 이동해야 하는 상황에 직면할 수 있습니다. 이때 json 파일을 가져오고 내보내면 됩니다.
(학습동영상 공유 : java 강좌)
예:
이 환경의 데이터베이스에 있는 사용자 정보를 json 형식의 파일로 내보낸 후, 해당 json 파일을 다른 환경으로 직접 복사하여 import합니다. 데이터베이스를 사용하면 우리의 목적을 달성할 수 있습니다.
아래에서는 springboot를 사용하여 사용자 데이터 정보 가져오기 및 내보내기 사례를 구축하고, 단일 사용자 및 다중 사용자 데이터베이스 정보 가져오기 및 내보내기 기능을 구현하겠습니다. 이 글을 주의 깊게 읽으면 json 파일 가져오기 및 내보내기의 핵심을 확실히 마스터할 수 있을 것입니다
준비 작업
필수 Maven 종속성 좌표:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.29</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>
데이터베이스의 사용자 정보:
이 필드 정보는 다음과 관련됩니다. Java의 UserEntity 엔터티 클래스 일대일 대응
Function 구현
종속성 및 데이터베이스 정보를 준비한 후 사용자 가져오기 및 내보내기를 위한 특정 프레임워크 구축을 시작하세요.
단일 사용자 가져오기 및 내보내기 및 다중 사용자 기능을 구현하여 UserUtil
package com.leige.test.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.leige.test.entity.UserEntity; import com.leige.test.entity.UserEntityList; import com.leige.test.model.ResultModel; import com.leige.test.service.UserService; import org.apache.commons.io.FileUtils; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.util.List; import java.util.UUID; public class UserUtil { //导入用户 public static ResultModel importUser(MultipartFile multipartFile, UserService userService) { ResultModel resultModel = new ResultModel(); try { // 获取原始名字 String fileName = multipartFile.getOriginalFilename(); // 获取后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //先将.json文件转为字符串类型 File file = new File("/"+ fileName); //将MultipartFile类型转换为File类型 FileUtils.copyInputStreamToFile(multipartFile.getInputStream(),file); String jsonString = FileUtils.readFileToString(file, "UTF-8"); //如果是json或者txt文件 if (".json".equals(suffixName) || ".txt".equals(suffixName)) { //再将json字符串转为实体类 JSONObject jsonObject = JSONObject.parseObject(jsonString); UserEntity userEntity = JSONObject.toJavaObject(jsonObject, UserEntity.class); userEntity.setId(null); userEntity.setToken(UUID.randomUUID().toString()); //调用创建用户的接口 userService.addUser(userEntity); } else { resultModel.setStatusCode(0); resultModel.setStatusMes("请上传正确格式的.json或.txt文件!"); } } catch (Exception e) { e.printStackTrace(); } return resultModel; } //批量导入用户 public static ResultModel importUsers(MultipartFile multipartFile, UserService userService) { ResultModel resultModel = new ResultModel(); try { // 获取原始名字 String fileName = multipartFile.getOriginalFilename(); // 获取后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //先将.json文件转为字符串类型 File file = new File("/"+ fileName); //将MultipartFile类型转换为File类型 FileUtils.copyInputStreamToFile(multipartFile.getInputStream(),file); String jsonString = FileUtils.readFileToString(file, "UTF-8"); //如果是json或者txt文件 if (".json".equals(suffixName) || ".txt".equals(suffixName)) { //再将json字符串转为实体类 JSONObject jsonObject = JSONObject.parseObject(jsonString); UserEntityList userEntityList = JSONObject.toJavaObject(jsonObject, UserEntityList.class); List<UserEntity> userEntities = userEntityList.getUserEntities(); for (UserEntity userEntity : userEntities) { userEntity.setId(null); userEntity.setToken(UUID.randomUUID().toString()); //调用创建用户的接口 userService.addUser(userEntity); } } else { resultModel.setStatusCode(0); resultModel.setStatusMes("请上传正确格式的.json或.txt文件!"); } } catch (Exception e) { e.printStackTrace(); } return resultModel; } //导出某个用户 public static ResultModel exportUser(HttpServletResponse response, UserEntity userEntity, String fileName){ ResultModel resultModel = new ResultModel(); ObjectMapper objectMapper = new ObjectMapper(); if (ObjectUtils.isEmpty(userEntity)){ resultModel.setStatusCode(0); resultModel.setStatusMes("此用户id没有对应的用户"); return resultModel; }else { try { String jsonString = objectMapper.writeValueAsString(userEntity); // 拼接文件完整路径// 生成json格式文件 String fullPath = "/" + fileName; // 保证创建一个新文件 File file = new File(fullPath); if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录 file.getParentFile().mkdirs(); } if (file.exists()) { // 如果已存在,删除旧文件 file.delete(); } file.createNewFile();//创建新文件 //将字符串格式化为json格式 jsonString = jsonFormat(jsonString); // 将格式化后的字符串写入文件 Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"); write.write(jsonString); write.flush(); write.close(); FileInputStream fis = new FileInputStream(file); // 设置相关格式 response.setContentType("application/force-download"); // 设置下载后的文件名以及header response.setHeader("Content-Disposition", "attachment;filename=" .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8")))); response.setCharacterEncoding("utf-8"); // 创建输出对象 OutputStream os = response.getOutputStream(); // 常规操作 byte[] buf = new byte[1024]; int len = 0; while((len = fis.read(buf)) != -1) { os.write(buf, 0, len); } fis.close(); os.close(); //一定要记得关闭输出流,不然会继续写入返回实体模型 return resultModel; } catch (Exception e) { resultModel.setStatusCode(0); resultModel.setStatusMes(e.getMessage()); e.printStackTrace(); return resultModel; } } } //导出所有用户 public static ResultModel exportAllUser(HttpServletResponse response, UserEntityList userEntityList, String fileName){ ResultModel resultModel = new ResultModel(); ObjectMapper objectMapper = new ObjectMapper(); if (ObjectUtils.isEmpty(userEntityList)){ resultModel.setStatusCode(0); resultModel.setStatusMes("此用户id没有对应的用户"); return resultModel; }else { try { String jsonString = objectMapper.writeValueAsString(userEntityList); // 拼接文件完整路径// 生成json格式文件 String fullPath = "/" + fileName; // 保证创建一个新文件 File file = new File(fullPath); if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录 file.getParentFile().mkdirs(); } if (file.exists()) { // 如果已存在,删除旧文件 file.delete(); } file.createNewFile();//创建新文件 //将字符串格式化为json格式 jsonString = jsonFormat(jsonString); // 将格式化后的字符串写入文件 Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"); write.write(jsonString); write.flush(); write.close(); FileInputStream fis = new FileInputStream(file); // 设置相关格式 response.setContentType("application/force-download"); // 设置下载后的文件名以及header response.setHeader("Content-Disposition", "attachment;filename=" .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8")))); response.setCharacterEncoding("utf-8"); // 创建输出对象 OutputStream os = response.getOutputStream(); // 常规操作 byte[] buf = new byte[1024]; int len = 0; while((len = fis.read(buf)) != -1) { os.write(buf, 0, len); } fis.close(); os.close(); //一定要记得关闭输出流,不然会继续写入返回实体模型 return resultModel; } catch (Exception e) { resultModel.setStatusCode(0); resultModel.setStatusMes(e.getMessage()); e.printStackTrace(); return resultModel; } } } //将字符串格式化为json格式的字符串 public static String jsonFormat(String jsonString) { JSONObject object= JSONObject.parseObject(jsonString); jsonString = JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat); return jsonString; } }
1. 프로젝트를 시작하고 브라우저에 접속하여 http://localhost:8888/export/users에 액세스하여 기존 사용자 json 파일을 모두 내보냅니다.
2. 파일 형식이 올바른지 확인하세요
3. 브라우저를 입력하여 http에 접속하세요: //localhost:8888/ 사용자 일괄 가져오기
users.json 파일 가져오기
주소를 입력하고 제출을 클릭하세요
데이터베이스를 확인하고 추가된 두 명의 테스트 사용자 1과 2가 성공한 것을 확인하세요!
여기에서는 단일 사용자의 가져오기 및 내보내기가 테스트되지 않으며 springboot 구성 파일에 대한 기타 정보 및 엔터티 클래스에 해당하는 데이터베이스 정보는 자세히 설명되지 않습니다.
관련 권장 사항: Java 시작하기
위 내용은 Java는 json 파일을 사용하여 데이터베이스 데이터를 가져오고 내보냅니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
