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

基于FastJson实现Json数据文件导入导出解析

哈喽,大家好,我是灰小猿,一个超会写bug的程序猿!

今天来记录一个在项目实战中比较实用的方法,主要是针对一些需要存在简单数据文件导入导出的场景,如:数据文件的简单备份、软件升版前后配置导入导出等场景

这个方法可以作为一个工具类来使用,可以将想要导出成文件的数据通过导出方法直接导出为json或ini文件,也可以将导出的文件直接通过导入方法进行解析,返回原先的数据模型。

以导出用户数据为例:

数据模型如下:

import lombok.Data;
import lombok.ToString;@Data
@ToString
public class User {private String address;private String tel;private int number;private boolean can;
}

首先通过导出方法,将数据导出为json或ini文件:

    /*** 导出json文件*/public static void exportJsonFile(String jsonData, String exportPath) {// 生成json格式文件try {// 保证创建一个新文件File file = new File(exportPath);if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}if (file.exists()) {file.delete();}file.createNewFile();// 将格式化后的字符串写入文件Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");write.write(jsonData);write.flush();write.close();} catch (Exception e) {e.printStackTrace();}}

之后如果需要再次将导出的数据导入到软件,只需要导入该文件,下述方法将会自动解析文件并将数据返回出去:

     /*** 导入json文件*/public static Object importJsonFile(String importFilePath) {File file = new File(importFilePath);int ch;String jsonStr = "";try (Reader reader = new InputStreamReader(new FileInputStream(file), "Utf-8");) {StringBuffer sb = new StringBuffer();while ((ch = reader.read()) != -1) {sb.append((char) ch);}jsonStr = sb.toString();System.out.println(JSON.parseObject(jsonStr));} catch (Exception e) {e.printStackTrace();}return JSON.parseObject(jsonStr);}

在实际使用中的调用方法如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.hirain.model.User;
import lombok.extern.slf4j.Slf4j;import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@Slf4j
public class JsonFileUtils {public static void main(String[] args) {Map<String, Object> jsonMap = new HashMap<>();jsonMap.put("name", "name1");jsonMap.put("age", 20);jsonMap.put("sex", true);User user = new User();user.setAddress("深圳");user.setCan(true);user.setTel("123456");user.setNumber(110);User user2 = new User();user2.setAddress("广州");user2.setCan(false);user2.setTel("888888");user2.setNumber(666);List<User> users = new ArrayList<>();users.add(user);users.add(user2);jsonMap.put("userInfo", users);String jsonData = JSON.toJSONString(jsonMap);//文件输出路径String exportFilePath = "D:\\下载\\testjson.json";exportJsonFile(jsonData, exportFilePath);log.info("导出成功");//解析文件实现导入Map<String, Object> jsonMap2 = (Map<String, Object>) importJsonFile(exportFilePath);System.out.println(jsonMap2.toString());Object userInfo =  jsonMap2.get("userInfo");List<User> userJsonList = JSONObject.parseArray(userInfo.toString(), User.class);System.out.println(userJsonList.toString());log.info("导入成功");}}

上面的方法是以导出json文件为例,如果想要导出ini文件,只需要将文件的后缀名修改一下即可。

在上述方法中,保存到文本的数据是一个map集合,其中存放了多种类型的数据,包括基本的数据类型,以及复杂的对象集合,解析文件之后可以正常拿到这个map集合,并且通过key可以拿到对应的value,

以上就是本期工具类的分享,我们下期见!

http://www.lryc.cn/news/308874.html

相关文章:

  • JVM内存分配与垃圾收集流程
  • 【python】yaml转成json
  • css5定位
  • 【解决】修改 UI界面渲染层级 的常见误区
  • 蓝桥杯练习系统(算法训练)ALGO-995 24点
  • 汽车电子笔记:BootLoader升级过程疑难问题解决方式(Bootloader响应10 02 + 刷死拯救机制)
  • 高级RAG:揭秘PDF解析
  • Android之UI Automator框架源码分析(第九篇:UiDevice获取UiAutomation对象的过程分析)
  • 【C语言】指针初阶2.0版本
  • 小红书关键词爬虫
  • 网络爬虫的危害,如何有效的防止非法利用
  • 2024/2/29 备战蓝桥杯 6-1 二分
  • 浅析ARMv8体系结构:原子操作
  • 综合练习(二)
  • sql-labs第46关(order by盲注脚本)
  • 13款可以轻松上手画图软件推荐
  • vue实现商品评分效果(通过插件实现)
  • SpringBoot 手写 Starter
  • C++ 学习笔记(Structured bindings)
  • K8S常用kubectl命令汇总(持续更新中)
  • 加密和签名的区别及应用场景
  • 双非二本找实习前的准备day3
  • 又挖到宝了!国人团队研发的AI视频工具PixVerse,这么好用居然还完全免费!(强烈推荐)
  • 勒索病毒普通用户防范建议
  • Zabbix“专家坐诊”第231期问答
  • 【.NET Core】深入理解IO - FileSteam流
  • CentOS7 Mysql 忘记密码或临时密码进不去时怎么跳过密码进去然后再更改密码
  • 深度学习 精选笔记(8)梯度消失和梯度爆炸
  • linux操作docker
  • k8s Pod 进阶(资源限制,健康检查探针详解,启动退出,pod生命周期,)