Java中将json字符串导出为json文件【详细步骤】

2023-11-09

一、概述

请根据具体需求具体改动,此代码需要将前端的数据查询出来,然后进行json字符串的转化

.getCatalogId(id)方法是根据id查出来的内容然后再进行转换成json字符串

也可以直接传入json字符串进行测试

二、代码 

    @ApiOperation("导出为json文件")
    @PostMapping("/export")
    @DisableEncryptResponse
    public R<String> export(@RequestBody Long id) {
        R<Object> list = scenarioService.getCatalogId(id);
        String jsonString = JSON.toJSONString(list);

        String filePath = "D:\\temp";
        String fileName = "test";
        String fullPath = filePath + File.separator + fileName + ".json";
        //例如:fullPath="D:/temp/test.json"
        String address = fileName + ".json";

        // 生成json格式文件
        try {
            // 保证创建一个新文件
            File file = new File(fullPath);
            if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
                file.getParentFile().mkdirs();
            }
            if (file.exists()) { // 如果已存在,删除旧文件
                file.delete();
            }
            file.createNewFile();

            // 格式化json字符串
            jsonString = formatJson(jsonString);

            // 将格式化后的字符串写入文件
            Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
            write.write(jsonString);
            write.flush();
            write.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return R.ok(address);
    }
package com.dbm.flowconfig.util;

public class json {
    /**
     * 单位缩进字符串。
     */
    private static String SPACE = "   ";

    /**
     * 返回格式化JSON字符串。
     *
     * @param json 未格式化的JSON字符串。
     * @return 格式化的JSON字符串。
     */
    public static String formatJson(String json) {
        StringBuffer result = new StringBuffer();

        int length = json.length();
        int number = 0;
        char key = 0;

        // 遍历输入字符串。
        for (int i = 0; i < length; i++) {
            // 1、获取当前字符。
            key = json.charAt(i);

            // 2、如果当前字符是前方括号、前花括号做如下处理:
            if ((key == '[') || (key == '{')) {
                // (1)如果前面还有字符,并且字符为“:”,打印:换行和缩进字符字符串。
                if ((i - 1 > 0) && (json.charAt(i - 1) == ':')) {
                    result.append('\n');
                    result.append(indent(number));
                }

                // (2)打印:当前字符。
                result.append(key);

                // (3)前方括号、前花括号,的后面必须换行。打印:换行。
                result.append('\n');

                // (4)每出现一次前方括号、前花括号;缩进次数增加一次。打印:新行缩进。
                number++;
                result.append(indent(number));

                // (5)进行下一次循环。
                continue;
            }

            // 3、如果当前字符是后方括号、后花括号做如下处理:
            if ((key == ']') || (key == '}')) {
                // (1)后方括号、后花括号,的前面必须换行。打印:换行。
                result.append('\n');

                // (2)每出现一次后方括号、后花括号;缩进次数减少一次。打印:缩进。
                number--;
                result.append(indent(number));

                // (3)打印:当前字符。
                result.append(key);

                // (4)如果当前字符后面还有字符,并且字符不为“,”,打印:换行。
                if (((i + 1) < length) && (json.charAt(i + 1) != ',')) {
                    result.append('\n');
                }

                // (5)继续下一次循环。
                continue;
            }

            // 4、如果当前字符是逗号。逗号后面换行,并缩进,不改变缩进次数。
            if ((key == ',')) {
                result.append(key);
                result.append('\n');
                result.append(indent(number));
                continue;
            }

            // 5、打印:当前字符。
            result.append(key);
        }

        return result.toString();
    }

    /**
     * 返回指定次数的缩进字符串。每一次缩进三个空格,即SPACE。
     *
     * @param number 缩进次数。
     * @return 指定缩进次数的字符串。
     */
    private static String indent(int number) {
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < number; i++) {
            result.append(SPACE);
        }
        return result.toString();
    }
}

三、使用postman进行测试

导出的文件在D盘temp文件夹下面

下面为json格式样例

{

    "teacher": [

        {

            "id": "001",

            "name": "张三"

        },

        {

            "id": "002",

            "name": "李四"

        }

    ],

    "student": [

        {

            "id": "101",

            "name": "王五"

        }

    ]

}

 四、使用nginx下载json文件

前端想要获取你的json文件,你可以通过配置nginx然后发送给前端下载网址,在网址中进行下载

 右击nginx.conf,使用notepad++打开,配置下载地址,配置好后,下载地址为 http://你的IP地址/download/test.json

 

 

 这样别人就可以通过你提供的链接进行下载

五、JSON字符串,JSON对象,JSON数组,实体类转换

http://t.csdn.cn/FS7ev 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中将json字符串导出为json文件【详细步骤】 的相关文章

  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 公开闭包内的方法

    当我们在闭包内创建一个方法时 该方法将成为该闭包的私有方法 并且在我们以某种方式公开它之前无法访问它 怎么可能暴露呢 您可以返回对它的引用 var a function var b function I m private alert go
  • 如何将焦点设置在 BootStrap 中的第一个输入字段上? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将焦点设置到独立于 id 的 HTML 表单中的第一个输入元素 https stackoverflow com questions 277544 how to set the focus to t
  • 在给定索引上将字符串分成两部分并返回两部分

    我有一个字符串 需要在给定索引上拆分 然后返回两个部分 并用逗号分隔 例如 string 8211 8 211 98700 98 700 因此 我需要能够在任何给定索引上拆分字符串 然后返回字符串的两半 内置方法似乎执行分割 但只返回分割的
  • 是否有跨浏览器的方式在Javascript中设置style.float?

    通常 如果您需要在 JavaScript 中设置样式属性 您可以这样说 element style attribute value 虽然略有不同 但属性名称通常与 HTML 属性名称类似 尽管是驼峰式 对我来说问题是 float 属性不起作
  • 如何跨多个 React Redux 组件使用 requestAnimationFrame 实现游戏循环?

    努力思考最好的解决办法 我可以使用递归调用requestAnimationFrame有一个游戏循环 export interface Props name string points number onIncrement gt void o
  • 基于范围内变量的角度设置形式动作

    我一直在尝试设置一个搜索表单 可以在其中注入表单操作属性 在我的表格中我有
  • JS:修改 JS 对象中的值/对

    我正在尝试找出修改对象的最佳方法 而无需三次写出类似的对象 所以我有这三个对象 var object1 start start end end type 1 var object2 start start end end type 2 va
  • Java8:流映射同一流中的两个属性

    我有课Model带有以下签名 class Model private String stringA private String stringB public Model String stringA String stringB this
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • Java和手动执行finalize

    如果我打电话finalize 在我的程序代码中的一个对象上 JVM当垃圾收集器处理这个对象时仍然再次运行该方法吗 这是一个大概的例子 MyObject m new MyObject m finalize m null System gc 是
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • 在 Go 中解析多个 JSON 对象

    可以使用以下方法轻松解析如下对象encoding json包裹 something foo something else bar 我面临的问题是当服务器返回多个字典时 如下所示 something foo something else ba
  • Firebase 身份验证和实时应用程序数据库如何保护自身安全?

    从一般开发的角度来看 我很好奇如何保护在线资源的访问 我们使用以下 Firebase 配置参数初始化 Web 应用程序 apikey authdomain projectid databaseurl messagesenderid 服务器如
  • Java 中的微分方程

    我正在尝试用java创建一个简单的SIR流行病模型模拟程序 基本上 SIR 由三个微分方程组定义 S t l t S t I t l t S t g t I t R t g t I t S 易感人群 I 感染人群 R 康复人群 l t c
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据
  • 测试 jQueryUI 是否已加载

    我正在尝试调试网站 并且我认为 jQueryUI 可能未正确加载 如何测试 jQueryUI 是否已加载 if jQuery ui UI loaded OR if typeof jQuery ui undefined UI loaded 应
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐

  • ES搜索框架--低配置服务器部署ES导致崩溃的解决

    省流 修改jvm options 降低堆大小 一 服务器情况 最近es会突然stop 查看日志后发现经常是因为报错 Native controller process has stopped no new native processes
  • ubuntu18.04安装mysql5.7

    sudo apt install mysql server sudo apt update Server version 5 7 36 0ubuntu0 18 04 1 Ubuntu sudo mysql show databases us
  • centOS 7 无法启动网络原因(service network start)+ifconfig找不到IP地址

    linux 中 安装 centos 配置静态地址却发现网络服务启动不了 试了好久终于好了 出个攻略记录一下修改历程 出现问题 Job for network service failed because the control proces
  • XILINX XDMA pcie 使用

    前段时间在公司项目中调试了PCIE 正好做一个总结 那些介绍XDMA PCIE之类的多余的东西网上能搜到很多 我这里就不多说 我写的只是自己的一些想法 以及自己的设计思路 同每一个刚开始调试PCIE的人一样 作为初学者大家都是先去网上搜集大
  • 服务器建文件夹,服务器建立文件夹

    服务器建立文件夹 内容精选 换一换 本指导适用于用户做网页301重定向时参考使用 装有IIS的服务器做301重定向在IIS里把网站正常发布 例如域名为www aaa com 在硬盘上建一个空文件夹 在IIS里建一个网站 例如域名为aaa c
  • Apicloud之如何实现一次上传多张图片

    前提 1 APIcloud做前端开发工具 2 加入了UIMediaScanner模块 代码使用安卓系统 ios系统的可以参考一下 代码讲解 1 UIMediaScanner模块选择多张图片以后 返回的是一个list集合 2 而路径是在lis
  • STM32在Keil5中硬件仿真问题记录汇总

    STM32在Keil5中硬件仿真问题记录汇总 问题描述 使用平台 处理方式 硬件上接线问题 问题描述 0x1FFFF3AE 0549 LSLS r1 r1 21 0x1FFFF3B0 D5FB BPL 0x1FFFF3AA 0x1FFFF3
  • Kafka学习笔记(高级篇)

    目录 高级功能 高效读写 涉及技术 ZooKeeper 自定义拦截器 监控 延迟消费 一些改进手段 高级功能 高效读写 涉及技术 高吞吐量 Kafka 每秒可以处理数百万消息 这是因为 Kafka 消息的处理是以批处理 Batching 的
  • 欧姆龙服务器数码管不显示问题,机顶盒常见故障排除方法

    摘要 随着广电网络有线数字电视不断升级改造 有线电视机顶盒成为用户观看标清电视 高清电视不可缺少的终端设备 在使用过程中常见的故障及潜在的故障也随之出现 现从工作中遇到的机顶盒维修常见故障及排除方法与大家分享一下 1 有图像无伴音 1 1
  • 如何使用chatGPT辅助开发复杂D3图表

    如何使用chatGPT辅助开发一个复杂的D3图表 首先简单介绍一下实现的表单 在线地址 https 2guliang top temperature timeChat 引言 什么是 D3 D3 Data Driven Documents 是
  • 国网B接口资源信息获取(Request_Resource)接口描述和消息示例

    前两篇blog介绍了国网B接口注册和资源上报相关 今天继续整理国网B接口资源信息获取相关的接口描述和消息示例 国网B接口设备接入端注册成功后的上报系统资源 Push Resourse 和GB28181的Catalog相比 还有些差别 Pus
  • Mapx开发目标轨迹核心代码

    CMapX m ctrlMapX CMapXLayer m objLayer 运动目标图层 CMapXLayer m traceLayer 目标轨迹层 CMapXLayer m scaleBarLayer 比例尺图层 CMapXFeatur
  • HDFS PB级数据无感迁移实践

    文章目录 前言 数据无感迁移的挑战 数据无感迁移实践 数据迁移的踩坑和填坑 问题1 DistCp build copy list阶段OutOfMemory问题 问题2 DistCp的map task failure 问题3 DistCp长尾
  • Redis基础_缓存相关知识

    redis缓存 1 为什么使用redis 2 使用redis有什么缺点 3 单线程的redis为什么这么快 4 redis的数据类型 以及每种数据类型的使用场景 5 redis的过期策略以及内存淘汰机制 6 redis和数据库双写一致性问题
  • STL 中 partition 算法的使用

    背景 STL 中包含一些分组有关的算法 需要引用有文件 include partition 概述 使用输入的比较函数对指定范围的元素重新排序 把结果为 true 的元素放在结果为 false 的元素之前 并返回两部分数据的分界位置的迭代器
  • jmeter如何测试一个get请求

    目录 1 配置测试计划 1 1 创建线程组 1 2 创建GET的HTTP请求取样器 模拟GET请求 1 3 添加查看结果树和聚合报告 2 执行压测并查看结果 2 1 验证接口 2 2 执行压力测试 使用jmeter测试一个http的get请
  • PAT 1002

    include
  • HTML5 WebSocket长连接

    HTML5 WebSocket实现长连接 先介绍一下WebSocket WebSocket的概念 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 WebSocket 使得客户端和服务器之间的数据
  • java异常分类

    一 异常父类 Throwable 有两个子类 1 Error 严重问题 2 Exception 非严重问题 二 Exception 1 运行时异常 是RuntimeException以及RuntimeException的子类 2 非运行时异
  • Java中将json字符串导出为json文件【详细步骤】

    一 概述 请根据具体需求具体改动 此代码需要将前端的数据查询出来 然后进行json字符串的转化 getCatalogId id 方法是根据id查出来的内容然后再进行转换成json字符串 也可以直接传入json字符串进行测试 二 代码 Api