厦门人才网官方网站,做电脑网站手机能显示不出来,篮网目前排名,品牌取名文章目录 JSON文件中的数据格式测试文件转换的接口 JSON文件中的数据格式 单条数据展开后如下#xff1a;
{text: 《邪少兵王》是冰火未央写的网络小说连载于旗峰天下,spo_list:[{predicate: 作者, objec… 文章目录 JSON文件中的数据格式测试文件转换的接口 JSON文件中的数据格式 单条数据展开后如下
{text: 《邪少兵王》是冰火未央写的网络小说连载于旗峰天下,spo_list:[{predicate: 作者, object_type:{value: 人物},subject_type: 图书作品, object: {value: 冰火未央},subject: 邪少兵王}]}测试文件转换的接口
【因为测试直接文件转化为CSV目前的这种json数据格式在转化为JSONArray时总会报格式错误因此我将JSON文件中的数据以换行符为分割符进行字符串的分割从直接文件转化改为一行数据一行数据的转化转化结果最后存储到CSV文件中就能成功代码如下】
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 测试文件转换的控制层*/
RestController
RequestMapping(/tocsv)
RequiredArgsConstructor
public class JsonToCSVController {/*** 测试接口* 批量转换json文件——csv文件*/RequestMapping(/test2)public static void tocsv2() {String jsonFilePath E:\\duie_train.json; // JSON文件路径
// String csvFilePath E:\\output.csv; // CSV文件输出路径try {// 读取JSON文件内容String jsonContent new String(Files.readAllBytes(Paths.get(jsonFilePath)));
// System.out.println(jsonContent);String[] jsonEntries jsonContent.split(\\n);// 创建一个集合来存储分割后的JSON字符串ListString splitJsonList new ArrayList();// 遍历分割后的字符串数组for (String jsonEntry : jsonEntries) {// 移除字符串中的空白字符String trimmedJsonEntry jsonEntry.trim();// 如果字符串不为空即它是一个有效的JSON对象则添加到集合中if (!trimmedJsonEntry.isEmpty()) {splitJsonList.add(trimmedJsonEntry);}}convertJsonToCsvlist(splitJsonList, E:\\output.csv);} catch (IOException e) {e.printStackTrace();}}/*** 方法* 批量转换json文件——csv文件* param jsonList* param outputFilePath* throws IOException*/public static void convertJsonToCsvlist(ListString jsonList, String outputFilePath) throws IOException {try (FileWriter writer new FileWriter(outputFilePath)) {// 写入 CSV 标题行writer.append(text).append(,).append(predicate).append(,).append(object_type).append(,).append(subject_type).append(,).append(object).append(,).append(subject).append(\n);// 遍历集合中的每个JSON字符串for (String jsonStr : jsonList) {JSONObject jsonObject JSONObject.parseObject(jsonStr);String text jsonObject.getString(text);JSONArray spoList jsonObject.getJSONArray(spo_list);for (Object spo : spoList) {JSONObject spoObj (JSONObject) spo;writer.append(text).append(,);writer.append(spoObj.getString(predicate)).append(,);JSONObject objectTypeObj spoObj.getJSONObject(object_type);writer.append(objectTypeObj ! null ? objectTypeObj.getString(value) : ).append(,);writer.append(spoObj.getString(subject_type)).append(,);JSONObject objectObj spoObj.getJSONObject(object);writer.append(objectObj ! null ? objectObj.getString(value) : ).append(,);writer.append(spoObj.getString(subject)).append(\n);}}}}}