ES6导出的mapping结构转为ES8的结构

package com.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * 将ES6的Mapping结构修改为ES8的Mapping结构
 * 去除第三层的type
 */
public class JsonModifier {
    public static void main(String[] args) {
        // 获取当前文件夹下所有的 .json 文件
        File folder = new File("C:\\Users\\x\\Desktop\\截图\\2023-12-25备份ES数据\\m12");
        File[] files = folder.listFiles((dir, name) -> name.endsWith(".json")&&name.startsWith("m"));

        // 遍历每个文件
        for (File file : files) {
            try {
                // 读取文件内容
                Path path = Paths.get(file.getAbsolutePath());
                byte[] bytes = Files.readAllBytes(path);
                String content = new String(bytes);

                // 解析 JSON 数据
                Object jsonObject = JSON.parse(content, Feature.OrderedField);

                // 删除第三层的键
                deleteThirdLevelKeys(jsonObject, 1);

                // 将修改后的 JSON 写回原文件
                String jsonString = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat);
                Files.write(path, jsonString.getBytes());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void deleteThirdLevelKeys(Object json, int level) {
        if (json instanceof JSONObject) {
            JSONObject jsonObject = (JSONObject) json;
            for (String key : jsonObject.keySet()) {
                Object value = jsonObject.get(key);
                if (value instanceof JSONObject) {
                    if (level == 2) {
                        JSONObject jsonObject2 = (JSONObject) value;
                        JSONObject tmp = (JSONObject)jsonObject2.get(jsonObject2.keySet().iterator().next());
                        jsonObject.put(key, tmp);
                    } else {
                        deleteThirdLevelKeys(value, level + 1);
                    }
                } else if (value instanceof JSONArray) {
                    JSONArray jsonArray = (JSONArray) value;
                    for (int i = 0; i < jsonArray.size(); i++) {
                        deleteThirdLevelKeys(jsonArray.get(i), level);
                    }
                }
            }
        } else if (json instanceof JSONArray) {
            JSONArray jsonArray = (JSONArray) json;
            for (int i = 0; i < jsonArray.size(); i++) {
                deleteThirdLevelKeys(jsonArray.get(i), level);
            }
        }
    }
}

相关推荐

  1. ES6导出mapping结构转为ES8结构

    2024-04-22 16:40:04       34 阅读
  2. ES6】Set和Map数据结构

    2024-04-22 16:40:04       43 阅读
  3. ES8导出mapping批量修改索引名

    2024-04-22 16:40:04       30 阅读
  4. ES6 新增 Set、Map 两种数据结构理解

    2024-04-22 16:40:04       51 阅读
  5. 脚本批量导入导出es结构

    2024-04-22 16:40:04       68 阅读
  6. 【09】ES6:Set 和 Map 数据结构

    2024-04-22 16:40:04       48 阅读
  7. ES6模块化导入导出方式

    2024-04-22 16:40:04       60 阅读
  8. ES6Map与Set

    2024-04-22 16:40:04       43 阅读
  9. ES6Set与Map

    2024-04-22 16:40:04       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 16:40:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 16:40:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 16:40:04       87 阅读
  4. Python语言-面向对象

    2024-04-22 16:40:04       96 阅读

热门阅读

  1. Web入门-HTTP协议

    2024-04-22 16:40:04       30 阅读
  2. 二叉树相关

    2024-04-22 16:40:04       33 阅读
  3. Redis延迟双删

    2024-04-22 16:40:04       30 阅读
  4. 2024.4.21力扣每日一题——组合总和 III

    2024-04-22 16:40:04       33 阅读
  5. 【运维】docker-compose部署redis

    2024-04-22 16:40:04       36 阅读